您好,登錄后才能下訂單哦!
小編給大家分享一下Python3爬蟲(chóng)中代理的使用方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
相對(duì)免費(fèi)代理來(lái)說(shuō),付費(fèi)代理的穩(wěn)定性相對(duì)更高一點(diǎn),本節(jié)介紹一下爬蟲(chóng)付費(fèi)代理的相關(guān)使用過(guò)程。
1. 付費(fèi)代理分類
在這里將付費(fèi)代理分為兩類:
提供接口獲取海量代理,按天或者按量付費(fèi),如訊代理
搭建了代理隧道,直接設(shè)置固定域名代理,如阿布云
本節(jié)講解一下這兩種代理的使用方法,分別以兩家代表性的代理網(wǎng)站為例進(jìn)行講解。
2. 訊代理
訊代理個(gè)人使用過(guò)代理有效率還是蠻高的,此處非廣告,其官網(wǎng)為:http://www.xdaili.cn/。
有多種類別的代理可供選購(gòu),摘抄其官網(wǎng)的各類別代理介紹如下:
優(yōu)質(zhì)代理: 適合對(duì)代理IP需求量非常大,但能接受代理有效時(shí)長(zhǎng)較短(10~30分鐘),小部分不穩(wěn)定的客戶
獨(dú)享動(dòng)態(tài): 適合對(duì)代理IP穩(wěn)定性要求非常高,且可以自主控制的客戶,支持地區(qū)篩選。
獨(dú)享秒切: 適合對(duì)代理IP穩(wěn)定性要求非常高,且可以自主控制的客戶,快速獲取IP,地區(qū)隨機(jī)分配
動(dòng)態(tài)混撥: 適合對(duì)代理IP需求量大,代理IP使用時(shí)效短(3分鐘),切換快的客戶
優(yōu)質(zhì)定制: 如果優(yōu)質(zhì)代理的套餐不能滿足您的需求,請(qǐng)使用定制服務(wù)
一般選擇第一類別優(yōu)質(zhì)代理即可,代理量比較大,但是代理的穩(wěn)定性沒(méi)那么高,有一些代理也是不可用的,所以這種代理的使用方式就需要借助于上一節(jié)所說(shuō)的代理池,我們自己再做一次篩選,確保代理可用。
可以購(gòu)買一天的試一下效果,購(gòu)買之后會(huì)提供一個(gè) API 來(lái)提取代理,如圖 9-6 所示:
圖 9-6 提取頁(yè)面
比如在這里我的提取 API 為:http://www.xdaili.cn/ipagent/greatRecharge/getGreatIp?spiderId=da289b78fec24f19b392e04106253f2a&orderno=YZ20177140586mTTnd7&returnType=2&count=20,可能已過(guò)期,在此僅做演示。
在這里指定了提取數(shù)量為 20,提取格式為 Json,直接訪問(wèn)鏈接即可提取代理,結(jié)果如圖 9-7 所示:
圖 9-7 提取結(jié)果
接下來(lái)我們要做的就是解析這個(gè) Json,然后將其放入我們的代理池中。
當(dāng)然如果信賴訊代理的話也可以不做代理池篩選,直接使用,不過(guò)我個(gè)人還是推薦再使用代理池篩選一遍,提高可用幾率。
根據(jù)上一節(jié)代理池的寫(xiě)法,我們只需要在 Crawler 中再加入一個(gè) crawl 開(kāi)頭的方法即可。
方法實(shí)現(xiàn)如下:
def crawl_xdaili(self): """ 獲取訊代理 :return: 代理 """ url = 'http://www.xdaili.cn/ipagent/greatRecharge/getGreatIp?spiderId=da289b78fec24f19b392e04106253f2a &orderno=YZ20177140586mTTnd7&returnType=2&count=20' html = get_page(url) if html: result = json.loads(html) proxies = result.get('RESULT') for proxy in proxies: yield proxy.get('ip') + ':' + proxy.get('port')
這樣我們就在代理池中接入了訊代理,獲取訊代理的結(jié)果之后,解析 Json,返回代理即可。
這樣代理池運(yùn)行之后就會(huì)抓取和檢測(cè)該接口返回的代理了,如果可用,那么就會(huì)被設(shè)為 100,通過(guò)代理池接口即可獲取到。
以上以訊代理為例說(shuō)明了此種批量提取代理的使用方法。
3. 阿布云代理
阿布云代理提供了代理隧道,代理速度快而且非常穩(wěn)定,此處依然非廣告,其官網(wǎng)為:https://www.abuyun.com/,如圖 9-8 所示:
圖 9-8 阿布云官網(wǎng)
阿布云的代理主要分為兩種,專業(yè)版和動(dòng)態(tài)版,另外還有定制版,摘抄官網(wǎng)的介紹如下:
專業(yè)版,多個(gè)請(qǐng)求鎖定一個(gè)代理 IP,海量 IP 資源池需求,近 300 個(gè)區(qū)域全覆蓋,代理 IP 可連續(xù)使用1分鐘,適用于請(qǐng)求 IP 連續(xù)型業(yè)務(wù)
動(dòng)態(tài)版,每個(gè)請(qǐng)求一個(gè)隨機(jī)代理 IP,海量 IP 資源池需求,近 300 個(gè)區(qū)域全覆蓋,適用于爬蟲(chóng)類業(yè)務(wù)
定制版,靈活按照需求定制,定制 IP 區(qū)域,定制 IP 使用時(shí)長(zhǎng),定制 IP 每秒請(qǐng)求數(shù)
關(guān)于專業(yè)版和動(dòng)態(tài)版的更多介紹可以查看官網(wǎng):https://www.abuyun.com/http-proxy/dyn-intro.html。
對(duì)于爬蟲(chóng)來(lái)說(shuō),推薦使用動(dòng)態(tài)版,購(gòu)買之后可以在后臺(tái)看到代理隧道的用戶名和密碼,如圖 9-9 所示:
圖 9-9 阿布云代理后臺(tái)
可以發(fā)現(xiàn)整個(gè)代理的連接域名為 proxy.abuyun.com,端口為 9020,均是固定的,但是使用之后每次的 IP 都會(huì)更改,這其實(shí)就是利用了代理隧道實(shí)現(xiàn)。
其官網(wǎng)原理介紹如下:
云代理通過(guò)代理隧道的形式提供高匿名代理服務(wù),支持 HTTP/HTTPS 協(xié)議。
云代理在云端維護(hù)一個(gè)全局 IP 池供代理隧道使用,池中的 IP 會(huì)不間斷更新,以保證同一時(shí)刻 IP 池中有幾十到幾百個(gè)可用代理IP。
需要注意的是代理IP池中有部分 IP 可能會(huì)在當(dāng)天重復(fù)出現(xiàn)多次。
動(dòng)態(tài)版HTTP代理隧道會(huì)為每個(gè)請(qǐng)求從 IP 池中挑選一個(gè)隨機(jī)代理 IP。
無(wú)須切換代理 IP,每一個(gè)請(qǐng)求一個(gè)隨機(jī)代理IP。
HTTP代理隧道有并發(fā)請(qǐng)求限制,默認(rèn)每秒只允許 5 個(gè)請(qǐng)求。如果需要更多請(qǐng)求數(shù),請(qǐng)額外購(gòu)買。
注意默認(rèn)套餐的并發(fā)請(qǐng)求是 5 個(gè),如果需要更多需要另外購(gòu)買。
使用的教程在官網(wǎng)也有,鏈接為:https://www.abuyun.com/http-proxy/dyn-manual-python.html,提供了 Requests、Urllib、Scrapy 的接入方式。
以 Requests 為例,接入示例如下:
import requests url = 'http://httpbin.org/get' # 代理服務(wù)器 proxy_host = 'proxy.abuyun.com' proxy_port = '9020' # 代理隧道驗(yàn)證信息 proxy_user = 'H01234567890123D' proxy_pass = '0123456789012345' proxy_meta = 'http://%(user)s:%(pass)s@%(host)s:%(port)s' % { 'host': proxy_host, 'port': proxy_port, 'user': proxy_user, 'pass': proxy_pass, } proxies = { 'http': proxy_meta, 'https': proxy_meta, } response = requests.get(url, proxies=proxies) print(response.status_code) print(response.text)
在這里其實(shí)就是使用了代理認(rèn)證,在前面我們也提到過(guò)類似的設(shè)置方法,運(yùn)行結(jié)果如下:
200 { "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Host": "httpbin.org", "User-Agent": "python-requests/2.18.1" }, "origin": "60.207.237.111", "url": "http://httpbin.org/get" }
輸出結(jié)果的 origin 即為代理IP的實(shí)際地址,可以多次運(yùn)行測(cè)試,可以發(fā)現(xiàn)每次請(qǐng)求 origin 都會(huì)在變化,這就是動(dòng)態(tài)版代理的效果。
這種效果其實(shí)跟我們之前的代理池的隨機(jī)代理效果類似,都是隨機(jī)取出了一個(gè)當(dāng)前可用代理。
但是此服務(wù)相比于維護(hù)代理池來(lái)說(shuō),使用更加方便,配置簡(jiǎn)單,省時(shí)省力,在價(jià)格可以接受的情況下,個(gè)人推薦此種代理。
以上是Python3爬蟲(chóng)中代理的使用方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。