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中的装饰器的用法
Apr 24 Python
python制作一个桌面便签软件
Aug 09 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
Python 的描述符 descriptor详解
Feb 27 Python
Python简单处理坐标排序问题示例
Jul 11 Python
python 字符串常用方法汇总详解
Sep 16 Python
详解在python操作数据库中游标的使用方法
Nov 12 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
Python计算信息熵实例
Jun 18 Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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
人族 Terran 基本策略
2020/03/14 星际争霸
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
小学生美德少年事迹
2014/02/02 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
辞职信的写法
2015/02/27 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
Pandas 数据编码的十种方法
2022/04/20 Python
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript