首页 > 编程 > Python > 正文

Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例

2019-11-25 15:49:44
字体:
来源:转载
供稿:网友

本文实例讲述了Python3.4实现从HTTP代理网站批量获取代理并筛选的方法。分享给大家供大家参考,具体如下:

最近在写爬虫,苦于不采用代理的情况下,默认的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)

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表