Python3实现并发检验代理池地址的方法


Posted in Python onSeptember 18, 2016

本文实例讲述了Python3实现并发检验代理池地址的方法。分享给大家供大家参考,具体如下:

#encoding=utf-8
#author: walker
#date: 2016-04-14
#summary: 用协程/线程池并发检验代理有效性
import os, sys, time
import requests
from concurrent import futures
cur_dir_fullpath = os.path.dirname(os.path.abspath(__file__))
Headers = {
      'Accept': '*/*',
      'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)',
    }
#检验单个代理的有效性
#如果有效,返回该proxy;否则,返回空字符串
def Check(desturl, proxy, feature):
  proxies = {'http': 'http://' + proxy}
  r = None #声明
  exMsg = None
  try:
    r = requests.get(url=desturl, headers=Headers, proxies=proxies, timeout=3)
  except:
    exMsg = '* ' + traceback.format_exc()
    #print(exMsg)
  finally:
    if 'r' in locals() and r:
      r.close()
  if exMsg:
    return ''
  if r.status_code != 200:
    return ''
  if r.text.find(feature) < 0:
    return ''
  return proxy
#输入代理列表(set/list),返回有效代理列表
def GetValidProxyPool(rawProxyPool, desturl, feature):
  validProxyList = list()  #有效代理列表
  pool = futures.ThreadPoolExecutor(8)
  futureList = list()
  for proxy in rawProxyPool:
    futureList.append(pool.submit(Check, desturl, proxy, feature))
  print('\n submit done, waiting for responses\n')
  for future in futures.as_completed(futureList):
    proxy = future.result()
    print('proxy:' + proxy)
    if proxy: #有效代理
      validProxyList.append(proxy)
  print('validProxyList size:' + str(len(validProxyList)))
  return validProxyList
#获取原始代理池
def GetRawProxyPool():
  rawProxyPool = set()
  #通过某种方式获取原始代理池......
  return rawProxyPool
if __name__ == "__main__":
  rawProxyPool = GetRawProxyPool()
  desturl = 'http://...'    #需要通过代理访问的目标地址
  feature = 'xxx'    #目标网页的特征码
  validProxyPool = GetValidProxyPool(rawProxyPool, desturl, feature)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
python skimage 连通性区域检测方法
Jun 21 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
python实现udp聊天窗口
Mar 31 Python
python初步实现word2vec操作
Jun 09 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
Dec 15 Python
windows安装python超详细图文教程
May 21 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 #Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 #Python
Python基于pillow判断图片完整性的方法
Sep 18 #Python
Django返回json数据用法示例
Sep 18 #Python
Python中list初始化方法示例
Sep 18 #Python
Python提取网页中超链接的方法
Sep 18 #Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 #Python
You might like
PHP静态新闻列表自动生成代码
2007/06/14 PHP
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
javascript 特殊字符串
2009/02/25 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python使用百度翻译进行中翻英示例
2014/04/14 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
pytorch 数据集图片显示方法
2018/07/26 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
成人教育自我鉴定
2013/11/01 职场文书
厨师岗位职责
2013/11/12 职场文书
护士求职自荐信范文
2014/03/19 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
学校百日安全活动总结
2015/05/07 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android