手把手教你用免費代理ip爬數據

點擊上方「 Python爬蟲與數據挖掘 」,進行關注

回覆「書籍」便可獲贈Python從入門到進階共10本電子書python

git

github

web

微信

三軍可奪帥也,匹夫不可奪志也。

/1 前言/網絡

  玩爬蟲的都避免不了各大網站的反爬措施限制,比較常見的是經過固定時間檢測某ip地址訪問量來判斷該用戶是否爲 「網絡機器人」,也就是所謂的爬蟲,若是被識別到,就面臨被封ip的風險,那樣你就不能訪問該網址了。app

  通用的解決辦法是用代理ip進行爬取,可是收費的代理ip通常都是比較貴的,網上卻是有不少免費的代理ip網站,可是受時效性影響,大部分地址都不能用,有不少維護代理ip池的教程,即把爬取並檢測後能用代理ip放到「代理池裏」,等之後要用的時候再從裏面提取,在我看來,這種效率比較低,由於這類IP地址很快就失效,咱們要作的是邊檢測邊使用,充分保證免費IP的時效性。less


/2 抓取IP地址/編輯器

  下面就開始實戰操做。學習

  1.首先咱們隨便找一個免費代理ip網站,以下圖所示。

  二、打開網頁查看器,分析其網頁元素結構,以下圖所示。

  三、就是一個簡單的靜態網頁,咱們用requests和bs4將ip地址和對應端口爬下,以下圖所示。

  四、每一行ip地址都由5個<td>標籤組成,而咱們須要的是第一個<td>標籤(對應IP地址)和第2個<td>標籤(對應端口),因此從第一個開始,每隔5個取出ip地址(item[::5]),從第二個開始,每隔5個取出對應端口(item[1::5]),參數n爲頁碼,每次只在1頁取1個有用的ip地址,最終效果以下圖所示:


/3 驗證IP有效性/

  這裏把百度百科做爲目標網站,這個看似很普通的網站,反爬措施卻極爲嚴格,爬不了幾條內容就開始請求失敗了,下面我以在百度百科查詢全國火車站歸屬地信息爲例演示如何使用免費代理ip。

  一、首先我在12306上把全部的火車站名都爬下來了,可是沒有歸屬地信息。

  二、而後以站名構造百度百科url信息,分析網頁元素,把爬取爬取火車站地址信息,網頁元素以下圖所示:

  三、因此,咱們只需在class_='basicInfo-item'的標籤內容裏查找有無「省」或者「市」的字符,而後輸出就好了,最後加一個while True循環,當該ip能正常爬數據時,則break該循環;若該ip被禁,則立刻從新請求一個新ip進行爬取。直接上代碼以下圖所示:

  四、其中for循環是遍歷全部火車站,try是用於檢測該ip還能不能用,若不能,則在except裏請求1個新ip,爬取效果以下圖所示:

  下次再遇到爬蟲被禁的狀況就能夠用此辦法解決了。


/4 結語/

  本文基於Python網絡爬蟲技術,主要介紹了去IP代理網站上抓取可用IP,而且Python腳本實現驗證IP地址的時效性,如遇到爬蟲被禁的狀況就能夠用本文的辦法進行解決。

  關於本文的代碼,小編已經上傳到github了,後臺回覆「IP代理」四個字,便可獲取代碼連接,若是以爲不錯,記得給個star噢!


------------------- End -------------------

往期精彩文章推薦:

歡迎你們點贊,留言,轉發,轉載,感謝你們的相伴與支持

想加入Python學習羣請在後臺回覆【入羣

萬水千山老是情,點個【在看】行不行

/今日留言主題/

隨便說一兩句吧~~

本文分享自微信公衆號 - Python爬蟲與數據挖掘(crawler_python)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索