1、ItemPipeLine微信
1.爬蟲提取出的數據存入item以後,item中保存的數據須要進一步處理,好比:清洗,去重,存儲等dom
2.pipeline須要process_item函數scrapy
(1)process_item:spider提出來的item做爲參數出入,同時傳入的還有spider;此方法是必需要實現的;必須返回一個item對象,被丟棄的item不會被以後的pipeline處理ide
(2)__init__:構造函數函數
進行一些必要的參數初始化學習
(3)open_spider(spider)大數據
spider對象被開啓的時候調用ui
(4)close_spider(spider)url
spider對象被關閉的時候調用.net
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:日誌記錄
2、中間件
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大同小異;每次返回結果的時候會自動調用;能夠有多個,按順序調用。
3、源碼
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料