[Python3.4] 从HTTP代理网站批量获取代理并筛选
来源:互联网 发布:网络销售需要什么条件 编辑:程序博客网 时间:2024/05/16 10:31
最近在写爬虫,苦于不采用代理的情况下,默认的IP不出几分钟就被封了,故而只能寻找代理。原以为找到HTTP代理就万事大吉了,没想到从那个网站获取的代理大部分都是不能用的,只有少部分能用。。。故而无奈之下,只能从那些代理网站大量获取代理IP,然后再拿过来进行进一步的筛选,将有效的代理IP提取出来,留待进一步使用。
筛选的主要原理是,通过main函数提取到未经筛选的代理rawProxyList,然后通过这些代理尝试连接目标网站(此文中是连接手机新浪网)。如果在规定时间内连接成功,则认定为有效代理,放到checkedProxyList之中。
__author__ = 'multiangle'__edition__='python3.4'import threadingimport urllib.request as requestimport timerawProxyList=[]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='手机新浪网' 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' #提取代理的网站。 req=request.urlopen(url).read() req=str(req,encoding='utf-8') list=req.split('\r\n') #网站返回的是字符串格式,用'\r\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)
0 0
- Python3 从HTTP代理网站批量获取代理并筛选
- [Python3.4] 从HTTP代理网站批量获取代理并筛选
- 批量获取及验证HTTP代理Python脚本
- python3获取免费代理IP
- python3使用多代理访问网站
- python3使用多代理访问网站
- python3使用代理ip访问指定网站
- python 爬虫 批量获取代理ip
- http 代理
- Http-代理
- HTTP代理
- http代理
- Http代理
- http代理
- HTTP 代理
- HTTP代理
- 代理网站
- 代理网站
- jquery esay ui学习
- 06 maven问题 "Could not calculate build plan: Plugin 'jarPrefix':'jarName':'jarVersion' "
- kindeditor屏蔽网络图片
- String使用经验
- TS科普17 有条件访问表
- [Python3.4] 从HTTP代理网站批量获取代理并筛选
- Android是否联网判断
- 网上文库文档免费下载
- 宽度为100%的位图面对屏幕放大的解决办法(可拼接时)
- Light oj--1275(二次函数)
- 清汤酸菜鱼的做法
- Linux串口编程
- Activity的生命周期
- Spark1.5.2安装--Spark学习(基础)