中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python爬蟲如何通過ip代理抓取網頁

發布時間:2022-05-27 09:47:14 來源:億速云 閱讀:116 作者:zzz 欄目:大數據

今天小編給大家分享一下Python爬蟲如何通過ip代理抓取網頁的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

步驟:

1、urllib2庫中的ProxyHandler類,通過此類可以使用ip代理訪問網頁

proxy_support=urllib2.ProxyHandler({}),其中參數是一個字典{‘類型':'代理ip:端口號'}

2、定制、創建一個opener

opener=urllib2.build_opener(proxy_support)

3、(1)安裝opener

          urlib2.install_opener(opener)

   (2)調用默認的opener

         opener.open(url)

針對沒有反爬蟲機制的網站,只要直接像上面引入ProxyHandler類進行處理,下面以訪問csdn主頁為例:

import urllib 

url="http://www.csdn.net/" 

for i in range(0,10000): 

    html=urllib.urlopen(url) 

    print html.info() 

    print i 

當使用上述代碼時,當循環到20時,就會出現下面的錯誤

Traceback (most recent call last):

  File "C:/Users/lenovo/PycharmProjects/untitled1/jt2/__init__.py", line 19, in 

    html=urllib.urlopen(url)

  File "C:\Python27\lib\urllib.py", line 87, in urlopen

    return opener.open(url)

  File "C:\Python27\lib\urllib.py", line 213, in open

    return getattr(self, name)(url)

  File "C:\Python27\lib\urllib.py", line 350, in open_http

    h.endheaders(data)

  File "C:\Python27\lib\httplib.py", line 997, in endheaders

    self._send_output(message_body)

  File "C:\Python27\lib\httplib.py", line 850, in _send_output

    self.send(msg)

  File "C:\Python27\lib\httplib.py", line 812, in send

    self.connect()

  File "C:\Python27\lib\httplib.py", line 793, in connect

    self.timeout, self.source_address)

  File "C:\Python27\lib\socket.py", line 571, in create_connection

    raise err

IOError: [Errno socket error] [Errno 10060]

這是由于用的電腦的單一ip進行反復訪問才被檢測出來的。

下面是使用了ip代理的代碼:

import urllib2 

import random 

def getHtml(url,proxies): 

    random_proxy = random.choice(proxies) 

    proxy_support = urllib2.ProxyHandler({"http":random_proxy}) 

    opener = urllib2.build_opener(proxy_support) 

    urllib2.install_opener(opener) 

    html=urllib2.urlopen(url) 

    return html 

url="http://www.csdn.net/" 

proxies=["101.53.101.172:9999","171.117.93.229:8118","119.251.60.37:21387","58.246.194.70:8080" 

        "115.173.218.224:9797","110.77.0.70:80"] 

for i in range(0,10000): 

    try: 

        html=getHtml(url,proxies) 

        print html.info()     #打印網頁的頭部信息,只是為了展示訪問到了網頁,可以自己修改成想顯示的內容 

        print i 

    except: 

        print "出現故障" 

這段代碼在測試1096次時被檢測到了,要知道我的列表中僅有6個ip,倘若增加ip的個數,那么被發現的幾率會不會更低。對于上面例子中的ip代理,或許過段時間就不可以使用了,這就要我們自己去搜新的IP代理來更換。還有程序中的異常處理是為了使程序可以處理ip代碼訪問時出現問題的情況,因為有些ip代理在訪問的時候會出現故障的,這樣做了可以使程序更加健壯。

#網上的ip不一定都能使用的,要多試試,或是選擇黑洞http代理ip,更穩定安全 

myproxies=["220.189.249.80:80","124.248.32.43:80"] 

html = get_html(url,user_agents,myproxies) 

print html.read() 

以上就是“Python爬蟲如何通過ip代理抓取網頁”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁陕县| 民和| 东乌| 保亭| 分宜县| 富顺县| 兴化市| 锡林浩特市| 台湾省| 遂平县| 庄河市| 西充县| 包头市| 丰城市| 天津市| 宿松县| 弥勒县| 漠河县| 长乐市| 西峡县| 越西县| 承德市| 区。| 扶风县| 金平| 芒康县| 田东县| 莒南县| 泰和县| 育儿| 镇沅| 大竹县| 周宁县| 三都| 将乐县| 门头沟区| 江口县| 孟州市| 尼勒克县| 嘉禾县| 淳化县|