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 27 Python
Python中利用xpath解析HTML的方法
May 14 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
详解python中各种文件打开模式
Jan 19 Python
Python的in,is和id函数代码实例
Apr 18 Python
Django实现微信小程序支付的示例代码
Sep 03 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
python爬虫爬取图片的简单代码
Jan 18 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 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 文件上传模型,支持多文件上传
2009/08/13 PHP
PHP获取文件后缀名的三个函数
2012/10/15 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
Python 抓取动态网页内容方案详解
2014/12/25 Python
python选择排序算法实例总结
2015/07/01 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
python模块常用用法实例详解
2019/10/17 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
班级德育工作实施方案
2014/02/21 职场文书
学雷锋志愿者活动总结
2014/06/27 职场文书
党员争先创优承诺书
2015/01/20 职场文书
幼儿教师辞职信
2015/02/27 职场文书
大学生英文求职信范文
2015/03/19 职场文书
单方投资意向书
2015/05/11 职场文书
MySQL表字段时间设置默认值
2021/05/13 MySQL
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle