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计算书页码的统计数字问题实例
Sep 26 Python
Python中使用Boolean操作符做真值测试实例
Jan 30 Python
Python实现获取操作系统版本信息方法
Apr 08 Python
Python中字典创建、遍历、添加等实用操作技巧合集
Jun 02 Python
Python实现合并字典的方法
Jul 07 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
django在开发中取消外键约束的实现
May 20 Python
python 8种必备的gui库
Aug 27 Python
Python数据类型最全知识总结
May 31 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
星际争霸中的热键
2020/03/04 星际争霸
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
Javascript模板技术
2007/04/27 Javascript
javascript String 的扩展方法集合
2008/06/01 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
React中上传图片到七牛的示例代码
2017/10/10 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
pandas中去除指定字符的实例
2018/05/18 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
小小的船教学反思
2014/02/21 职场文书
园林系毕业生求职信
2014/06/23 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
教学副校长工作总结
2015/08/13 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
nginx安装以及配置的详细过程记录
2021/09/15 Servers
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python