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实现linux服务器批量修改密码并生成execl
Apr 22 Python
Python实现设置windows桌面壁纸代码分享
Mar 28 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 Python
Python二维码生成识别实例详解
Jul 16 Python
python防止随意修改类属性的实现方法
Aug 21 Python
Django ORM 查询表中某列字段值的方法
Apr 30 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
django rest framework 自定义返回方式
Jul 12 Python
python 第三方库paramiko的常用方式
Feb 20 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操作文件方法问答
2007/03/16 PHP
php 正则 过滤html 的超链接
2009/06/02 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
destoon公司主页模板风格的添加方法
2014/06/20 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
pymysql的简单封装代码实例
2020/01/08 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
阿波罗盒子:Apollo Box
2017/08/14 全球购物
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
爱国演讲稿400字
2014/05/07 职场文书
美食节策划方案
2014/05/26 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
Python中的 Set 与 dict
2022/03/13 Python
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers