• <th id="bb20k"></th>
    1. <th id="bb20k"></th>
      1. <th id="bb20k"></th>
        <progress id="bb20k"></progress>

        您的位置:新聞資訊 >文章內容
        Python爬蟲怎么提取免費IP
        來源:Python中文社區 作者:admin 時間:2018-12-12 16:10:02

        爬蟲經常會遇到IP限制,如果不使用IP進行切換,是沒有辦法繼續采集的。這主要是網站針對爬蟲的措施,那么如何能夠突破IP限制呢?最簡單快捷的方法就是使用IP池,頻繁切換IP訪問,這肯定是需要大量的IP,這IP怎么來?可以使用Python爬蟲抓取免費IP,下面一起去看看Python爬蟲怎么提取免費IP。

        一、requests代理使用

        對于requests來說,代理的設置比較簡單,只需要傳入proxies參數即可。

        不過需要注意的是,這里我是在本機安裝了抓包工具Fiddler,并用它在本地端口8888創建了一個HTTP代理服務(用Chrome插件SwitchyOmega),即代理服務為:127.0.0.1:8888,我們只要設置好這個代理,就可以成功將本機ip切換成代理軟件連接的服務器ip了。

        Python爬蟲怎么提取免費IP

        import requests
        
        proxy = '127.0.0.1:8888'proxies = {
            'http':'http://' + proxy,
            'https':'http://' + proxy}try:
            response = requests.get('http://httpbin.org/get',proxies=proxies)
            print(response.text)except requests.exceptions.ConnectionError as e:
            print('Error',e.args)

        這里我是用來http://httpbin.org/get作為測試網站,我們訪問該網頁可以得到請求的有關信息,其中origin字段就是客戶端ip,我們可以根據返回的結果判斷代理是否成功。返回結果如下:

        {
            "args":{},    "headers":{
                "Accept":"*/*",
                "Accept-Encoding":"gzip, deflate",
                "Connection":"close",
                "Host":"httpbin.org",
                "User-Agent":"python-requests/2.18.4"
            },
            "origin":"xx.xxx.xxx.xxx",
            "url":"http://httpbin.org/get"}

        二、爬取代理網頁ip和端口

        開始爬取代理IP,首先我們打開Chrome瀏覽器查看網頁,并找到ip和端口元素的信息。

        Python爬蟲怎么提取免費IP

        可以看到,代理IP以表格存儲ip地址及其相關信息,所以我們用BeautifulSoup提取時很方便便能提取出相關信息,但是我們需要注意的是,爬取的ip很有可能出現重復的現象,尤其是我們同時爬取多個代理網頁又存儲到同一數組中時,所以我們可以使用集合來去除重復的ip。

        Python爬蟲怎么提取免費IP

        將要爬取頁數的ip爬取好后存入數組,然后再對其中的ip逐一測試。

        三、檢測爬取到的ip是否可用

        Python爬蟲怎么提取免費IP

        這里就用到了上面提到的requests設置代理的方法,我們使用http://httpbin.org/ip作為測試網站,它可以直接返回我們的ip地址,測試通過后再存入MomgoDB數據庫。

        四、將爬取的可用代理存入MongoDB

        連接數據庫然后指定數據庫和集合,再將數據插入就OK了。

        最后運行查看一下結果吧

        畢竟是免費代理,有效的還是很少的,并且存活時間確實很短,不過,爬取的量大,還是能找到可用的,我們只是用作練習的話,還是勉強夠用的?,F在看看數據庫里存儲的吧。

        五、隨機抽取一個ip,測試成功后返回

        因為爬取的頁數不多,加上有效ip也少,再加上我沒怎么爬,所以現在數據庫里的ip并不多,不過也算是將這些ip給存了下來?,F在就來看看怎么隨機取出來吧。

        由于擔心放入數據庫一段時間后ip會失效,所以取出前我重新進行了一次測試,如果成功再返回ip,不成功的話就直接將其移出數據庫。

        這樣我們需要使用代理的時候,就能通過數據庫隨時取出來了。


        相關文章內容簡介
        解鎖高速不限量IP代理
        在線咨詢
        微信公眾號

        微信公眾號

        回到頂部
        国产欧美 一区,国产一本大道香蕉AV,国产亚洲卡通另类图片,国产高清AV在线