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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
常用python编程模板汇总
Feb 12 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
Django+zTree构建组织架构树的方法
Aug 21 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
解决import tensorflow as tf 出错的原因
Apr 16 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
详解python中的闭包
Sep 07 Python
Python字符串及文本模式方法详解
Sep 10 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学习笔记之一
2011/01/17 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
js Dialog 实践分享
2012/10/22 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
python线程的几种创建方式详解
2019/08/29 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
django迁移文件migrations的实现
2020/03/31 Python
用 Python 制作地球仪的方法
2020/04/24 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
HTML5注册页面示例代码
2014/03/27 HTML / CSS
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
园林资料员岗位职责
2013/12/30 职场文书
护理职业生涯规划书
2014/01/24 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
青岛导游词
2015/02/12 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
最新最全的手机号验证正则表达式
2022/02/24 Javascript