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


Posted in Python onSeptember 26, 2017

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

最近在写爬虫,苦于不采用代理的情况下,默认的IP不出几分钟就被封了,故而只能寻找代理。原以为找到HTTP代理就万事大吉了,没想到从那个网站获取的代理大部分都是不能用的,只有少部分能用。。。故而无奈之下,只能从那些代理网站大量获取代理IP,然后再拿过来进行进一步的筛选,将有效的代理IP提取出来,留待进一步使用。

筛选的主要原理是,通过main函数提取到未经筛选的代理rawProxyList,然后通过这些代理尝试连接目标网站(此文中是连接手机新浪网)。如果在规定时间内连接成功,则认定为有效代理,放到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='手机新浪网'
 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程序设计有所帮助。

Python 相关文章推荐
python中的yield使用方法
Feb 11 Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
python 远程统计文件代码分享
May 14 Python
Python中操作文件之write()方法的使用教程
May 25 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
Python中你应该知道的一些内置函数
Mar 31 Python
python pandas中DataFrame类型数据操作函数的方法
Apr 08 Python
python输入错误后删除的方法
Oct 12 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
flask框架url与重定向操作实例详解
Jan 25 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
python九九乘法表的实例
Sep 26 #Python
Python实现简单的HttpServer服务器示例
Sep 25 #Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 #Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 #Python
Python实现破解猜数游戏算法示例
Sep 25 #Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 #Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 #Python
You might like
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
利用Python实现命令行版的火车票查看器
2016/08/05 Python
简单易懂的python环境安装教程
2017/07/13 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
python多线程并发及测试框架案例
2019/10/15 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
python下载的库包存放路径
2020/07/27 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
python调用win32接口进行截图的示例
2020/11/11 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
外包公司软件测试工程师
2014/11/01 面试题
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
电子专业毕业生自我鉴定
2014/01/22 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
少年雷锋观后感
2015/06/10 职场文书