1. 程式人生 > >Scrapy(爬蟲框架)中,Spider類中parse()方法的工作機制

Scrapy(爬蟲框架)中,Spider類中parse()方法的工作機制

生成 工作 就會 ffffff 遞歸 賦值 () 其他 根據

parse(self,response):當請求url返回網頁沒有指定回調函數,默認的Request對象的回調函數,用來處理網頁返回的response,和生成的Item或者Request對象

以下分析一下parse()方法的工作機制:

1.因為使用的yield,而不是return,parse函數將會當做一個生成器使用,scrapy會註意調用parse方法中生成的結果,並且判斷該結果是一個什麽樣的類型

2.如果是request則會加入爬取隊列中,如果是item類型則會使用pipeline處理,其他類型則會返回錯誤信息

3.scrapy取到第一部分的request不會立馬就去發送request,只是將這個request放到隊列中,然後接著從生成器中獲取

4.取完了第一部分的request,然後再獲取第二部分的item,取到item了,就會放到對應的pipeline中處理

5.parse方法作為回調函數(callback),賦值給Request,指定parse()方法處理這些請求scrapy.Request(url,callback=self.parse)

6.Request對象經過調度,執行生成scrapy.http.response()響應對象,並送回parse()方法,直到調度器中沒有Requset(遞歸的思路)

7.取盡之後,parse()工作結束,引擎再根據對列和pipeline中的內容去執行相應的操作

8.程序在取得各個頁面的items前,會先處理完之前所有的request對列的請求,然後再提取items

Scrapy(爬蟲框架)中,Spider類中parse()方法的工作機制