您好,登錄后才能下訂單哦!
scrapy是一個基于Twisted的異步處理框架,可擴展性很強。優點此處不再一一贅述。
下面介紹一些概念性知識,幫助大家理解scrapy。
一、數據流向
要想熟練掌握這個框架,一定要明白數據的流向是怎么一個過程。總結如下:
1.引擎先打開網站,請求url。
2.引擎通過調度器以Request形式調度url。
3.引擎請求下一個url。
4.調度器將url通過Downloader Middlewares發送給引擎
5.Downloader 生成response,通過Downloader Middlewares發送給引擎
6.引擎接收Response 通過spiderMiddleware發送給spider處理
7.spider處理response
8.引擎將spider處理的item給ItemPipeline 然后將新的Request給調度器。
二、各個結構的作用
DownloderMiddleware
調度器會從隊列之中拿出Request發送給Downloader執行下載,這個過程會經過DownloaderMiddleware的處理。
作用的位置有兩個:
核心方法有三個:
process_request(request,spider)
Request 到達Downloader之前,就會被調用
參數介紹:
返回值:
1.返回None
調用別的process_request()
方法,直至將Request執行得到Response才會結束。
2.返回Response
對象,低優先級的process_request()
和process_exception
不調用。
3.返回request
對象,低優先級的process_request()
停止執行,返回新的Request
。
process_response(request,response,spider)
作用位置:
返回值的情況:
1.返回Request
低優先級的process_respons()
不調用。
2.返回response
低優先級的process_respons()
繼續調用。
process_exception(request,exception,spider)
此函數主要是用來處理異常的。
spiderMiddleware
作用位置:
核心方法:
process_soider_input(response,spider)
返回值:
1.返回None
繼續處理Response,調用所有的spiderMiddleware
,知道spider處理
2.跑出異常
直接調用Request的errback()
方法,使用process_spider_output()
處理。
process_spider_output(response,result,spider)
當spider處理Response返回結果時,被調用。
process_spider_exception(response,exception,spider)
返回值:none
繼續處理response,返回一個可迭代對象,process_spider_output()
方法被調用。
process_start_request(start_requests,spider)
以spider
啟動的Request
為參數被調用,必須返回request
。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。