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中的random()方法的使用介绍
May 15 Python
Python爬取京东的商品分类与链接
Aug 26 Python
Python代码解决RenderView窗口not found问题
Aug 28 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
Python玩转PDF的各种骚操作
May 06 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
使用python切片实现二维数组复制示例
Nov 26 Python
Python环境管理virtualenv&amp;virtualenvwrapper的配置详解
Jul 01 Python
Python time库的时间时钟处理
May 02 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 JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
php中的动态调用实例分析
2015/01/07 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
详解AngularJS2 Http服务
2017/06/26 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
2017/09/28 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
Python验证企业工商注册码
2015/10/25 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
Python之修改图片像素值的方法
2019/07/03 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
python3.4中清屏的处理方法
2020/07/06 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
Exception类的常用方法
2012/06/16 面试题
业务员的岗位职责
2014/03/15 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
大学生活感想
2015/08/10 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL