Python爬蟲中urllib庫的使用進階--配置代理

什么是代理?

代理(英語:Proxy),也稱網(wǎng)絡代理,是一種特殊的網(wǎng)絡服務,允許一個網(wǎng)絡終端(一般為客戶端)通過這個服務與另一個網(wǎng)絡終端(一般為服務器)進行非直接的連接。一些網(wǎng)關、路由器等網(wǎng)絡設備具備網(wǎng)絡代理功能。一般認為代理服務有利于保障網(wǎng)絡終端的隱私或安全,防止攻擊。(百度百科)

簡單來說,代理就是不直接訪問目標而是連接另一臺終端通過其訪問目標,實現(xiàn)IP的變化,對于一些對IP有限制的網(wǎng)站爬取非常有用

為什么用代理

很多網(wǎng)站會檢測某一段時間某個IP的訪問次數(shù)(通過流量統(tǒng)計,系統(tǒng)日志等),如果訪問次數(shù)多的不像正常人,它會禁止這個IP的訪問。
所以我們可以設置一些代理服務器,每隔一段時間換一個代理,就算IP被禁止,依然可以換個IP繼續(xù)爬取

使用代理流程

代理的使用大概可以分為四步
1.構建處理器handler(代理IP)
2.使用處理器構建連接方法(build_opener)
3.構建請求
4.使用連接方法中的open函數(shù)打開請求
其中最重要的是第一步構建處理器的ProxyHandler函數(shù)

ProxyHandler函數(shù)

urllib中通過ProxyHandler來設置使用代理服務器,下面代碼說明如何使用自定義opener來使用代理:

from urllib import request

# 這個是沒有使用代理的
#返回結(jié)果為本機的網(wǎng)絡IP
# resp = request.urlopen('http://httpbin.org/ip')
# print(resp.read().decode("utf-8"))

# 這個是使用了代理的
#代理成功后返回結(jié)果為設置的IP
handler = request.ProxyHandler({"http":"111.177.190.14:9999"})

opener = request.build_opener(handler)
req = request.Request("http://httpbin.org/ip")
resp = opener.open(req)
print(resp.read())

常見免費代理網(wǎng)站:

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 幫別人做個東西,從選材、配圖、做效果……不知不覺就花了三個多小時。溫故知新,順便學了點新東西,也算收獲。但是有點...
    紫藤下的凝望閱讀 312評論 0 0
  • NumPy是當前python科學計算中非常重要的一個庫,在Quantopian中應用非常廣泛,NumPy支持多維數(shù)...
    taoeaten閱讀 1,598評論 1 1

友情鏈接更多精彩內(nèi)容