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