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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
Python玩转Excel的读写改实例
Feb 22 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
python向图片里添加文字
Nov 26 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
浅谈Python 函数式编程
Jun 20 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
Python 操作 MySQL数据库
Sep 18 Python
利用Pycharm连接服务器的全过程记录
Jul 01 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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
PHP define函数的使用说明
2008/08/27 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
javascript回调函数详解
2018/02/06 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
python操作mysql代码总结
2018/06/01 Python
基于python实现高速视频传输程序
2019/05/05 Python
python正则-re的用法详解
2019/07/28 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python