這篇文章中寫了常用的下載中間件的用法和例子。
Downloader Middleware處理的過程主要在調(diào)度器發(fā)送requests請(qǐng)求的時(shí)候以及網(wǎng)頁將response結(jié)果返回給spiders的時(shí)候,所以從這里我們可以知道下載中間件是介于Scrapy的request/response處理的鉤子,用于修改Scrapy request和response。
編寫自己的下載器中間件
編寫下載器中間件,需要定義以下一個(gè)或者多個(gè)方法的python類
為了演示這里的中間件的使用方法,這里創(chuàng)建一個(gè)項(xiàng)目作為學(xué)習(xí),這里的項(xiàng)目是關(guān)于爬去httpbin.org這個(gè)網(wǎng)站
scrapy startproject httpbintest
cd httpbintest
scrapy genspider example example.com
創(chuàng)建好后的目錄結(jié)構(gòu)如下:
這里我們先寫一個(gè)簡單的代理中間件來實(shí)現(xiàn)ip的偽裝
創(chuàng)建好爬蟲之后我們講httpbin.py中的parse方法改成:
def parse(self, response): print(response.text)
然后通過命令行啟動(dòng)爬蟲:scrapy crawl httpbin
在最下面我們可以看到"origin": "114.250.88.66"
我們?cè)诓榭醋约旱膇p:
而我們要做就是通過代理中間件來實(shí)現(xiàn)ip的偽裝,在middleares.py中寫如下的中間件類:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26