Scrapy(爬蟲框架)中,Spider類中parse()方法的工作機制
阿新 • • 發佈:2018-07-12
生成 工作 就會 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()方法的工作機制