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存取XML的常见方法实例分析
Mar 21 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
python语言中with as的用法使用详解
Feb 23 Python
Django基础知识与基本应用入门教程
Jul 20 Python
django进阶之cookie和session的使用示例
Aug 17 Python
Python字符串的常见操作实例小结
Apr 08 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
python将print输出的信息保留到日志文件中
Sep 27 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
python 字符串格式化的示例
Sep 21 Python
解决Pycharm 运行后没有输出的问题
Feb 05 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邮箱地址正则表达式验证
2015/11/13 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
原生js实现放大镜
2017/02/20 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
Python import自定义模块方法
2015/02/12 Python
Python格式化css文件的方法
2015/03/10 Python
windows下安装Python和pip终极图文教程
2017/03/05 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
对pandas中to_dict的用法详解
2018/06/05 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
思想汇报格式
2014/01/05 职场文书
人事档案接收函
2014/01/12 职场文书
国税会议欢迎词
2014/01/16 职场文书
工作岗位说明书模板
2014/05/09 职场文书
优秀团队申报材料
2014/12/26 职场文书
坎儿井导游词
2015/02/09 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis