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通过函数属性实现全局变量的方法
May 16 Python
python任务调度实例分析
May 19 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
Python编程实现微信企业号文本消息推送功能示例
Aug 21 Python
Python从零开始创建区块链
Mar 06 Python
Sanic框架应用部署方法详解
Jul 18 Python
python实现决策树分类(2)
Aug 30 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 Python
python中取绝对值简单方法总结
Jul 24 Python
python 解决函数返回return的问题
Dec 05 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 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
删除无限级目录与文件代码共享
2006/07/12 PHP
我的论坛源代码(三)
2006/10/09 PHP
php 静态变量的初始化
2009/11/15 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
15条JavaScript最佳实践小结
2013/08/09 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
Python文档生成工具pydoc使用介绍
2015/06/02 Python
python发送HTTP请求的方法小结
2015/07/08 Python
Python语言进阶知识点总结
2019/05/28 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
交通事故委托书范本
2014/09/28 职场文书
教师节班会开场白
2015/06/01 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
如何在C++中调用Python
2021/05/21 Python
Python数据分析之pandas读取数据
2021/06/02 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
MySQL视图概念以及相关应用
2022/04/19 MySQL