Python爬蟲中urllib庫的使用進(jìn)階--配置代理

什么是代理?

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

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

為什么用代理

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

使用代理流程

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

ProxyHandler函數(shù)

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

from urllib import request

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

# 這個(gè)是使用了代理的
#代理成功后返回結(jié)果為設(shè)置的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())

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

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

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

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

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