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的Django框架中的模版相关知识
Jul 15 Python
Python判断值是否在list或set中的性能对比分析
Apr 16 Python
Python字符串拼接的几种方法整理
Aug 02 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
python 剪切移动文件的实现代码
Aug 02 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
TensorFlow 显存使用机制详解
Feb 03 Python
Python argparse模块使用方法解析
Feb 20 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
使用gunicorn部署django项目的问题
Dec 30 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
第六节--访问属性和方法
2006/11/16 PHP
pw的一个放后门的方法分析
2007/10/08 PHP
php远程下载类分享
2016/04/13 PHP
php生成酷炫的四个字符验证码
2016/04/22 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
设定php简写功能的方法
2019/11/28 PHP
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
如何利用find命令查找文件
2016/11/18 面试题
工程部经理岗位职责
2013/12/08 职场文书
大学生先进事迹材料
2014/02/16 职场文书
学生保证书格式
2015/02/27 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
Django+Celery实现定时任务的示例
2021/06/23 Python