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 相关文章推荐
python3.0 字典key排序
Dec 24 Python
python中self原理实例分析
Apr 30 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
Sanic框架流式传输操作示例
Jul 18 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
如何在Django配置文件里配置session链接
Aug 06 Python
python同步两个文件夹下的内容
Aug 29 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
python实现双色球随机选号
Jan 01 Python
Python实现扫码工具的示例代码
Oct 09 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
python实现大文本文件分割
2019/07/22 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
python解释器安装教程的方法步骤
2020/07/02 Python
keras的三种模型实现与区别说明
2020/07/03 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
国际经济贸易专业推荐信
2013/11/06 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
表扬信范文
2019/04/22 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书