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装饰器的函数式编程详解
Feb 27 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
Python入门学习指南分享
Apr 11 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
Python多线程编程之多线程加锁操作示例
Sep 06 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
Python面向对象之内置函数相关知识总结
Jun 24 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
模仿OSO的论坛(三)
2006/10/09 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
队列在编程中的实际应用(php)
2010/09/04 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
javascript document.compatMode兼容性
2010/02/23 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
python中的闭包用法实例详解
2015/05/05 Python
Python批量查询域名是否被注册过
2017/06/21 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
python实现智能语音天气预报
2019/12/02 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
德尔福集团DELPHI的笔试题
2012/02/22 面试题
生产部岗位职责范文
2014/02/07 职场文书
犯错检讨书
2014/02/21 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
员工工作表扬信
2015/05/05 职场文书
中学总务处工作总结
2015/08/12 职场文书
Go语言基础函数基本用法及示例详解
2021/11/17 Golang