Python爬蟲有時(shí)會(huì)遇到被禁ip的情況。這時(shí)可以找到代理網(wǎng)站,抓取ip,做動(dòng)態(tài)輪詢。也可以使用別人做的第三方ip代理平臺(tái),比如Crawler,就是利用代理IP地址池做分布式下載的第三方平臺(tái)。除了Scratch,普通java,php,Python等??梢杂胏url來表示。
租用服務(wù)器哪個(gè)好?小編選夢(mèng)飛云。
如果我們不使用第三方平臺(tái)作為代理ip,我們必須手動(dòng)抓取ip。我們可以谷歌搜索代理ip,找到很多網(wǎng)站,找到幾個(gè)穩(wěn)定的代理網(wǎng)站,寫一個(gè)爬蟲腳本連續(xù)爬行,或者在使用量不大的情況下手工粘貼爬行。土豪有一點(diǎn),其實(shí)可以買一點(diǎn)。1元左右值得買幾千。
此時(shí),如果您使用Python,您需要自己維護(hù)一個(gè)ip池,控制每個(gè)ip的訪問時(shí)間,并隨機(jī)更改ip。然而,如果你想讓它服務(wù),你可以使用squid綁定多個(gè)ip地址,并作為一個(gè)轉(zhuǎn)發(fā)代理。Squid是一款優(yōu)秀的Linux系統(tǒng)下使用的代理服務(wù)器軟件,代理列表的代理ip可以根據(jù)Squid的cache_peer機(jī)制,以一定格式寫入配置文件。
這相當(dāng)于把所有的管理和調(diào)度問題都交給squid,你只需要使用爬蟲訪問squid的服務(wù)端口。
現(xiàn)在您可以總結(jié)所有步驟:
1.讓爬蟲去指定的squid服務(wù)ip和端口進(jìn)行抓取。
2.將有效的ip寫入squid的配置文件并重新加載配置文件。
3.每天定期使用爬蟲腳本抓取代理網(wǎng)站上的免費(fèi)ip,或者購買一定數(shù)量的ip寫入mongodb或其他數(shù)據(jù)庫,這個(gè)表作為原始表。
4.在使用之前,我們需要測(cè)試這個(gè)ip是否有效。方法是用curl訪問網(wǎng)站檢查返回值。我們需要新建一個(gè)表,如果有效就插入原表,驗(yàn)證后從原表中刪除。在驗(yàn)證的同時(shí),我們可以使用響應(yīng)時(shí)間來計(jì)算該ip的質(zhì)量和最大使用時(shí)間。有一個(gè)算法可以參考基于連接代理優(yōu)化管理的多線程web爬蟲處理方法。有不懂的請(qǐng)咨詢夢(mèng)飛云idc了解。