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 3实战爬虫之爬取京东图书的图片详解
Oct 09 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
python 获取sqlite3数据库的表名和表字段名的实例
Jul 17 Python
python中的Elasticsearch操作汇总
Oct 30 Python
Python Json数据文件操作原理解析
May 09 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
Python将字典转换为XML的方法
Aug 01 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
pycharm 实现光标快速移动到括号外或行尾的操作
Feb 05 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 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
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
php实现微信支付之退款功能
2018/05/30 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
python实现自动登录后台管理系统
2018/10/18 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
windows下python安装pip方法详解
2020/02/10 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
教育学专业毕业生的自我评价
2013/11/21 职场文书
大学毕业后的十年规划
2014/01/07 职场文书
西北政法大学自主招生自荐信
2014/01/29 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
医院病假条范文
2015/08/17 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python