Python3.4實(shí)現(xiàn)從HTTP代理網(wǎng)站批量獲取代理并篩選的方法示例
本文實(shí)例講述了Python3.4實(shí)現(xiàn)從HTTP代理網(wǎng)站批量獲取代理并篩選的方法。分享給大家供大家參考,具體如下:
最近在寫爬蟲,苦于不采用代理的情況下,默認(rèn)的IP不出幾分鐘就被封了,故而只能尋找代理。原以為找到HTTP代理就萬(wàn)事大吉了,沒(méi)想到從那個(gè)網(wǎng)站獲取的代理大部分都是不能用的,只有少部分能用。。。故而無(wú)奈之下,只能從那些代理網(wǎng)站大量獲取代理IP,然后再拿過(guò)來(lái)進(jìn)行進(jìn)一步的篩選,將有效的代理IP提取出來(lái),留待進(jìn)一步使用。
篩選的主要原理是,通過(guò)main函數(shù)提取到未經(jīng)篩選的代理rawProxyList,然后通過(guò)這些代理嘗試連接目標(biāo)網(wǎng)站(此文中是連接手機(jī)新浪網(wǎng))。如果在規(guī)定時(shí)間內(nèi)連接成功,則認(rèn)定為有效代理,放到checkedProxyList之中。
__author__ = 'multiangle' __edition__='python3.4' import threading import urllib.request as request import time rawProxyList=[] checkedProxyList=[] class proxycheck(threading.Thread): def __init__(self,proxy_list): threading.Thread.__init__(self) self.proxy_list=proxy_list self.timeout=3 self.testurl='http://www.sina.cn/' self.testStr='手機(jī)新浪網(wǎng)' def checkproxy(self): cookies=request.HTTPCookieProcessor() for proxy in self.proxy_list: handler=request.ProxyHandler({'http':'http://%s'%(proxy)}) opener=request.build_opener(cookies,handler) t1=time.time() try: req=opener.open(self.testurl,timeout=self.timeout) res=req.read() res=str(res,encoding='utf8') usetime=time.time()-t1 if self.testStr in res: checkedProxyList.append((proxy,usetime)) except Exception as e : print(e) def run(self): self.checkproxy() if __name__=='__main__': num=20 thread_num=10 checkThrends=[] url='YOUR PROXY URL' #提取代理的網(wǎng)站。 req=request.urlopen(url).read() req=str(req,encoding='utf-8') list=req.split('\r\n') #網(wǎng)站返回的是字符串格式,用'\r\n'進(jìn)行分割 rawProxyList=list print('get raw proxy') for i in rawProxyList: print(i) # s=proxycheck_test(rawProxyList) batch_size=int((len(rawProxyList)+thread_num-1)/thread_num) print(batch_size) for i in range(thread_num): t=proxycheck(rawProxyList[batch_size*i:batch_size*(i+1)]) checkThrends.append(t) for i in range(checkThrends.__len__()): checkThrends[i].start() for i in range(checkThrends.__len__()): checkThrends[i].join() print(checkedProxyList.__len__(),' useful proxy is find') for i in checkedProxyList: print(i)
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python程序中設(shè)置HTTP代理
- 批量獲取及驗(yàn)證HTTP代理的Python腳本
- Python request設(shè)置HTTPS代理代碼解析
- 對(duì)python使用http、https代理的實(shí)例講解
- Python代碼實(shí)現(xiàn)http/https代理服務(wù)器的腳本
- python爬蟲http代理使用方法
- Python異步爬蟲requests和aiohttp中代理IP的使用
- python使用aiohttp通過(guò)設(shè)置代理爬取基金數(shù)據(jù)簡(jiǎn)單示例
- 解決python異步框架aiohttp無(wú)法使用本地代理問(wèn)題
- python做http代理請(qǐng)求的項(xiàng)目實(shí)踐
相關(guān)文章
Python數(shù)據(jù)可視化之Seaborn的使用詳解
Seaborn庫(kù)是python中基于matplotlib庫(kù)的可視化工具庫(kù),通過(guò)sns我們可以更方便地繪制出更美觀的圖表。本文將分享python基于Seaborn庫(kù)的一系列繪圖操作,感興趣的可以了解一下2022-04-04詳解selenium + chromedriver 被反爬的解決方法
這篇文章主要介紹了詳解selenium + chromedriver 被反爬的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例
這篇文章主要介紹了Scrapy基于scrapy_redis實(shí)現(xiàn)分布式爬蟲部署的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Pandas中map(),applymap(),apply()函數(shù)的使用方法
本文主要介紹了Pandas中map(),applymap(),apply()函數(shù)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python如何利用opencv實(shí)現(xiàn)手勢(shì)識(shí)別
這篇文章主要介紹了Python如何利用opencv實(shí)現(xiàn)手勢(shì)識(shí)別,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙可以參考一下2022-05-05pytest用例間參數(shù)傳遞的兩種實(shí)現(xiàn)方式示例
pytest提供了許多運(yùn)行命令以供定制化運(yùn)行某一類測(cè)試用例或者某個(gè)測(cè)試用例等,下面這篇文章主要給大家介紹了關(guān)于pytest用例間參數(shù)傳遞的兩種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12