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 相关文章推荐
pygame学习笔记(1):矩形、圆型画图实例
Apr 15 Python
python写入中英文字符串到文件的方法
May 06 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
3分钟学会一个Python小技巧
Nov 23 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
Jupyter Notebook 远程访问配置详解
Jan 11 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过滤危险html代码
2008/08/18 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
php cli 小技巧
2013/06/03 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
requireJS使用指南
2016/04/27 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
Python随机生成彩票号码的方法
2015/03/05 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
有关Python的22个编程技巧
2018/08/29 Python
python快排算法详解
2019/03/04 Python
python同步windows和linux文件
2019/08/29 Python
村干部承诺书
2014/03/28 职场文书
户外宣传策划方案
2014/05/25 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android