1. 程式人生 > >scrapy+python當你的爬蟲遇到驗證碼處理方式之一

scrapy+python當你的爬蟲遇到驗證碼處理方式之一


朋友們大家好,今天再開一博說一下自己在學習爬蟲練習時遇到的問題及解決辦法


1、首先得承認,任何方式的偷盜行為都不在法律的保護範圍之內,要是偷自己的東西呢,就另當別論了,douban 還是相當仁義的,只擋一道牆,你只要能越過我的牆,進入的是你家的院子,你隨便拿吧。

2、翻過douban的牆,很多網站都反爬的很好的,比如汽車之家,你介面上看到的內容,大部分都是加密的,汽車之前最常用的好像是css 對照加的,你拿汽車之家的資料,拿回來的內容大部份都 :: befor,:: content 我只類比一下,那有沒有辦法爬汽車之家呢,辦法很顯然,你只要拿到他的對稱加密的方法,原生的對照回來就好了,當然汽車之家也不傻,他基本上每隔一段時間就變一下

3、講一下爬蟲最基本的翻人家牆的方法,IP代理池,使用者代理池,什麼IP代理池(那不是要自己寫一個很長很長的list?那我去哪裡搞IP呢,辦法是有的“西刺代理”免費版,but 我不建議大家這樣玩,建議使用收費的,呼叫他們的介面就好了,原因很簡單,你寫完你的IP代理池的時候,前邊的已經有N多的不能用了,而且你寫程式的時候還要迴圈這個代理池呢!那麼使用者代理池呢,原理與IP代理池一樣,你要模擬不同使用者在登陸你要爬的網站)

4、翻人家牆的方式還有什麼呢?答案N多,我也在學習中!~好了,開始最基本的三板斧,settings設定

4-1、robots,false, 如果遵循robots協議,人家就會跟你說,我這個網站上那些是不能爬的,所以你要false

4-2、cookie,true,這個不講了大家應該都知道

4-3、 user_agnet,當然前邊提到了你如果使用者代理池,可以忽略這部分,還有一種就是setting裡邊不設定,可以在爬蟲中設定

4-4、 pipelines,開啟它,要問為什麼不?原理很簡單,你使用scrapy框架,你就要單純的認為在pipelines處理你的資料,就是比你自己寫的方法處理快,不信!,不信你試試看吧,試完了通知我,我也學習一下

5、items要不要定義呢,取決於你自己的愛好吧,當然如果4-4你要使用了,你就需要定義你的items了

6、開始我們的爬蟲吧,以上是我的建議,各人有各人的辦法,俗話說:“小雞不尿尿,各有各的道”

7、分析一下我們要乾的事情,登入douban

7-1、拿著你的各個賬號多登入幾次,What happened?,對相信你的感覺,fu?k,captchar!!!  驗證碼出現了,不用慌,douban兄弟很仗義沒使用特複雜的,只使用了一個不定長的英文當驗證碼

7-2、使用的知識點,urllib.reques或著 requests 都可以

7-3、xpath 表示式

7-4、識別驗證碼(我推薦雲打碼)你即可以當開發者,同時有可以當使用者,關鍵是還有一個好處,你使用開發者建立一個應該程式拿著你的appkey還能給你返利,可算看到回頭錢了

7-5、 下載並識別

urllib.request.urlretrieve(captcha_image[0],filename=localpath)
對下載你的captchar,呼叫你本地的雲打碼識別captchar

7-6、  pushi your data

data={
    'source': 'index_nav',
    'form_email':'[email protected]',
    'form_password':'124567894545',
    'redir':'https://www.douban.com/people/164980594/',
    'login': '登入',
}

return [FormRequest.from_response(response,
                                  # 設定cookie資訊
meta={'cookiejar': response.meta['cookiejar']},
                                  # 設定headers資訊模擬成瀏覽器
headers=self.headers,
                                  formdata=data,
                                  callback=self.next
                                  )]

7-7、對哥們你成功了,剩下的^_^,哈哈,哥們你自己幹吧,到這裡模擬登陸就完成了,下邊是圖,請客官往下看,你現在就可以說我可以隨便登陸我們公司自己開發的網站了“你懂得”

7-8、雲打碼的平臺:http://www.yundama.com/

7-9、我的網盤提供一個python3呼叫你本地“雲打碼平臺”提供的64位的dll檔案,32位的我沒有試驗,我的機器是64位的,各位可以自己試驗證一下

7-10、圖來了









8、等我學習完了機器學校在來寫一篇,我還是不想使用雲打碼的,^_^,^_^