一、ItemPipeLine 1.爬蟲提取出的數據存入item之後,item中保存的數據需要進一步處理,比如:清洗,去重,存儲等 2.pipeline需要process_item函數 (1)process_item:spider提出來的item作為參數出入,同時傳入的還有spider;此方法是必須 ...
一、ItemPipeLine
1.爬蟲提取出的數據存入item之後,item中保存的數據需要進一步處理,比如:清洗,去重,存儲等
2.pipeline需要process_item函數
(1)process_item:spider提出來的item作為參數出入,同時傳入的還有spider;此方法是必須要實現的;必須返回一個item對象,被丟棄的item不會被之後的pipeline處理
(2)__init__:構造函數
進行一些必要的參數初始化
(3)open_spider(spider)
spider對象被開啟的時候調用
(4)close_spider(spider)
spider對象被關閉的時候調用
3.Spider
(1)對應的是文件夾spiders下的文件
(2)__init__:初始化爬蟲的名稱,start_urls列表
(3)start_requests:生成Requests對象嫁給Scrapy下載並返回response
(4)parse:根據返回的response解析出相應的item,item自動進入到pipeline;如果需要,解析出url,url自動交給requests模塊,一直迴圈下去
(5)start_request:此方法僅能被調用一次,讀取start_urls內容並啟動迴圈過程
(6)name:設置爬蟲的名字
(7)start_urls:設置開始第一批爬取的url
(8)allow_domains:spider允許爬取的功能變數名稱列表
(9)start_request(self):只被調用一次
(10)parse
(11)log:日誌記錄
二、中間件
1.定義:中間件是處於引擎和下載器中間的一層組件
2.作用:對發出的請求和返回的結果進行預處理
3.數量:可以有很多個,被按順序載入執行
4.位置:在middlewares文件中,需要在settings中設置以便生效
5.編寫十分簡單
6.必須實現以下一個或者多個方法
(1)process_request(self,request,spider)
在request通過的時候被調用;必須返回None或者Request或Response或raise IgnoreRequest;
None:scrapy將繼續處理該request
Request:scrapy將停止調用process_request並沖洗調度返回的request
Response:scrapy將不會調用其他的process_request或者process_exception,直接將該response作為結果同時會調用process_response函數
(2)process_response(self,request,response,spider)
跟process_request大同小異;每次返回結果的時候會自動調用;可以有多個,按順序調用。
三、源碼
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料