Python教你玩轉代理ip

我們在做爬蟲的時候,難免會遇到各類反扒措施,其中最普遍就是服務器端在特定時間內識別某ip地址訪問次數,超過閾值則判定為“網絡機器人”,接著會返回403或者其他一些奇怪的數據。下面以1個小例子給大家介紹一種非常有效的解決辦法:

第一步:應用場景

以爬取美團某火鍋店評論數據為例

Python教你玩轉代理ip

總共有849頁的評論,評論數據的接口和參數如下圖

Python教你玩轉代理ip

Python教你玩轉代理ip

下面用requests模擬請求

Python教你玩轉代理ip

參數offset控制評論頁數,返回結果如下:

Python教你玩轉代理ip

前幾十頁還是能正常返回數據的,後面就開始返回錯誤網頁了。


第二步:解決思路

遇到這類問題,使用代理ip是一種很好的解決辦法,我們可以選擇付費的代理ip,這類ip即穩定又實用,但是價格稍微有點貴,貼一張代理ip價格圖

對一般的學生黨來說還是捨不得。

慶幸的是,現在有很多免費的代理ip網站,如下圖所示

Python教你玩轉代理ip

這是隨便找的一個免費代理ip網站,但是有很多ip地址是不能用的,所以我們可以用python寫個爬取ip地址並驗證其是否可用的函數,在爬取美團評論的程序中引用此函數,一旦上個代理ip失效,則立即訪問此函數,會獲得1個新的能用的代理ip,相當於是一個代理ip的api。


第三步:寫獲得代理ip的爬蟲函數

1.分析該代理ip網站,就是一簡單的靜態網頁,直接用requests獲取靜態網頁,然後用Beatifulsoup解析即可

Python教你玩轉代理ip


2.爬取ip地址


這裡給大家介紹一個解析網頁的小技巧,首先我用find_all找到所有標籤為tr的網頁,然後在此基礎上,再用find_all找到該結構下所有的td標籤,很方便就把IP地址和端口取出來了,比用xpath簡單多了。

3.驗證該ip地址

Python教你玩轉代理ip

這一步比較好理解,就是用上面爬下來的地址作為代理ip先測試一下能不能用,如果能用則直接返回美團評論的爬蟲程序。


第四步:將該函數插入美團評論爬蟲程序中

Python教你玩轉代理ip

這段代碼的意思是,如果用該代理ip模擬請求成功,則break跳出循環,否則將重新循環,再次請求新的ip地址,直至能請求通過。


小結:本文主要介紹免費代理ip的使用方法,只適合爬數量相對較少、對穩定性要求不高數據,否則還是要用付費ip。

請在“python的爬蟲與數據分析”後臺獲得源碼


分享到:


相關文章: