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中有趣在__call__函数
Jun 21 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
tensorflow 环境变量设置方式
Feb 06 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
python通过cython加密代码
Dec 11 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
python分分钟绘制精美地图海报
Feb 15 Python
python获取带有返回值的多线程
May 02 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分页时出现的Fatal error的解决方法
2011/04/18 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
关于js类的定义
2011/06/28 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
Node.js 实现抢票小工具 & 短信通知提醒功能
2019/10/22 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
实现Python与STM32通信方式
2019/12/18 Python
python交互模式基础知识点学习
2020/06/18 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
企业内控岗位的职责
2014/02/07 职场文书
升学宴演讲稿
2014/09/01 职场文书
课内比教学心得体会
2014/09/09 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
八达岭长城导游词
2015/01/30 职场文书
销售员岗位职责
2015/02/10 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
入伍通知书
2015/04/23 职场文书
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
nginx设置资源请求目录的方式详解
2022/05/30 Servers