溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

爬蟲爬取過程中代理IP會遇到什么問題

發(fā)布時(shí)間:2021-05-06 10:38:37 來源:億速云 閱讀:161 作者:小新 欄目:編程語言

小編給大家分享一下爬蟲爬取過程中代理IP會遇到什么問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

學(xué)爬蟲數(shù)據(jù),必然是爬蟲和反爬蟲的對抗。

用代理ip做反爬蟲還是比較有效的。

在做抓取代理ip項(xiàng)目之前,還搜索了一些相關(guān)項(xiàng)目。qiye的項(xiàng)目還不錯(cuò),但是用起來也有問題。比如偶爾會被個(gè)別代理網(wǎng)站關(guān)閉ip(某段時(shí)間重啟太多程序)。

當(dāng)scrapy使用qiye項(xiàng)目時(shí),經(jīng)常會出現(xiàn)10060和10061的錯(cuò)誤,以及超時(shí)等錯(cuò)誤,從而導(dǎo)致代理ip在代理池中不斷地刷。為了解決這個(gè)問題,我們考慮了兩種方法:

1.更改scrapy代碼

當(dāng)使用代理時(shí),request沒有成功重啟。切記,scrapy不會重新啟動request。

2.確保代理ip的有效性

方法2更合適,scrapy應(yīng)該專注于抓取網(wǎng)站。方法2也保證了代理ip的有效性。

這意味著你重寫了一個(gè)爬行代理ip項(xiàng)目。

工程設(shè)計(jì)與實(shí)現(xiàn)。

最初的想法比較簡單,直接實(shí)現(xiàn)了代理ip的捕捉、驗(yàn)證、存儲和獲取功能。類似于qiye項(xiàng)目。在代理網(wǎng)站上獲取代理ip,驗(yàn)證url后存儲sqlite,然后要求webapi返回代理ip。

問題來了:

1、目標(biāo)網(wǎng)站是douban[雖然豆瓣上有api,但是api不能滿足我的需求,只能自己爬豆瓣],相當(dāng)于測試代理ip欺騙豆瓣的反爬蟲設(shè)置。豆瓣反爬蟲最重要的是訪問cookie。這個(gè)cookie也可以隨機(jī)模仿。

2、sqlite本身就是一個(gè)輕量級數(shù)據(jù)庫。單個(gè)過程/線程訪問沒有問題。并行訪問時(shí),需要建立自己的鎖保護(hù)。我覺得用sqlite比較低,不需要用mysql。qiye項(xiàng)目使用sqlalchemy支持各種數(shù)據(jù)庫。我覺得沒必要,因?yàn)樽鳛檩o助項(xiàng)目,定位小,重量輕??梢钥焖俜祷赜脩舸韎p。

3、在測試豆瓣和豆瓣api時(shí)遇到的坑,就是豆瓣api使用代理ip基本無效.代理ip爬豆瓣還不錯(cuò),但通過代理ip突破了豆瓣api分鐘的限制,代理ip全部失敗,很少成功.估計(jì)豆瓣api對反爬的設(shè)置要嚴(yán)格些,使用高匿的代理ip就可以了.但實(shí)際上高匿的ip很少,代理網(wǎng)站說是高匿的,不一定是高匿的。

就豆瓣而言,cookie需要設(shè)置兩個(gè)項(xiàng)目,否則很容易被ban使用。并非ip問題。事實(shí)上,這也說明了一個(gè)問題,需要了解一些抓取網(wǎng)站的機(jī)制,多嘗試。

4、數(shù)據(jù)庫中存儲的數(shù)據(jù)越多,一個(gè)過程處理不完就會被淹沒。

5、各種細(xì)節(jié)。

設(shè)計(jì)/實(shí)現(xiàn)。

1) 使用bloomfilter判重.所獲代理ip可以在判重復(fù)之前判重,通過檢查判重,減少資源消耗.bf每隔一段時(shí)間就會被清空。

python本身就有bf,當(dāng)時(shí)好像遇到了什么問題,實(shí)際使用和需求有點(diǎn)不一致,具體記不清了,最后拋棄了bf,使用了別人的bfonredis項(xiàng)目.paramiao/pydrbloomfilter。

其實(shí)我只是想用bf。做輪子需要時(shí)間,暫時(shí)不做。

2) 目標(biāo)站點(diǎn)檢測中使用的反爬蟲方法:

代理人ip[廢話,測試]隨機(jī)agent帶cookie訪問。

3) 多個(gè)過程進(jìn)行ip判斷.防止過多的過程一直運(yùn)行.當(dāng)前判斷過程的數(shù)量是直接配置在配置文件中,以后要做到自適應(yīng)。

4) 代理ip以輪詢方式提供。接著更新算法,根據(jù)時(shí)間和數(shù)量進(jìn)行選擇。

5) web緩存,選擇一定數(shù)量的ip,每2-3分鐘測試一次。這個(gè)測試不需要爬網(wǎng)站的網(wǎng)站,因?yàn)闇y試后可以連接代理訪問,比如baidu。

6) 數(shù)據(jù)庫使用redis.redis作為兩點(diǎn),一是數(shù)據(jù)存儲,二是web緩存。redis本身不大。適合這里。此外,bf-redis項(xiàng)目也使用redis。

7) 為多個(gè)目標(biāo)網(wǎng)站提供不同的代理和緩存。

以上是“爬蟲爬取過程中代理IP會遇到什么問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI