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中为feedparser设置超时时间避免堵塞
Sep 28 Python
python通过BF算法实现关键词匹配的方法
Mar 13 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
python中csv文件的若干读写方法小结
Jul 04 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
Python常用编译器原理及特点解析
Mar 23 Python
python控制台打印log输出重复的解决方法
May 14 Python
Python正则表达式中flags参数的实例详解
Apr 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
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
axios学习教程全攻略
2017/03/26 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python文本数据相似度的度量
2018/03/12 Python
python实现五子棋人机对战游戏
2020/03/25 Python
python内置模块collections知识点总结
2019/12/19 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
python数据类型强制转换实例详解
2020/06/22 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
岗位职责的定义
2013/11/10 职场文书
韩国商务邀请函
2014/01/14 职场文书
劳动竞赛口号
2014/06/16 职场文书
作文评语集锦
2014/12/25 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
企业宣传语大全
2015/07/13 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python