scrapy 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()方法,直到調度器中沒有Request(遞歸的思路)

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

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

9.這一切的一切,Scrapy引擎和調度器將負責到底。

 

轉自:https://www.cnblogs.com/huwei934/p/6970951.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM