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