Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例

 更新时间:2017年09月26日 08:58:38   作者:multiangle  
这篇文章主要介绍了Python3.4实现从HTTP代理网站批量获取代理并筛选的方法,涉及Python网络连接、读取、判断等相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python3.4实现从HTTP代理网站批量获取代理并筛选的方法。分享给大家供大家参考,具体如下:

最近在写爬虫,苦于不采用代理的情况下,默认的IP不出几分钟就被封了,故而只能寻找代理。原以为找到HTTP代理就万事大吉了,没想到从那个网站获取的代理大部分都是不能用的,只有少部分能用。。。故而无奈之下,只能从那些代理网站大量获取代理IP,然后再拿过来进行进一步的筛选,将有效的代理IP提取出来,留待进一步使用。

筛选的主要原理是,通过main函数提取到未经筛选的代理rawProxyList,然后通过这些代理尝试连接目标网站(此文中是连接手机新浪网)。如果在规定时间内连接成功,则认定为有效代理,放到checkedProxyList之中。

__author__ = 'multiangle'
__edition__='python3.4'
import threading
import urllib.request as request
import time
rawProxyList=[]
checkedProxyList=[]
class proxycheck(threading.Thread):
 def __init__(self,proxy_list):
  threading.Thread.__init__(self)
  self.proxy_list=proxy_list
  self.timeout=3
  self.testurl='http://www.sina.cn/'
  self.testStr='手机新浪网'
 def checkproxy(self):
  cookies=request.HTTPCookieProcessor()
  for proxy in self.proxy_list:
   handler=request.ProxyHandler({'http':'http://%s'%(proxy)})
   opener=request.build_opener(cookies,handler)
   t1=time.time()
   try:
    req=opener.open(self.testurl,timeout=self.timeout)
    res=req.read()
    res=str(res,encoding='utf8')
    usetime=time.time()-t1
    if self.testStr in res:
     checkedProxyList.append((proxy,usetime))
   except Exception as e :
    print(e)
 def run(self):
  self.checkproxy()
if __name__=='__main__':
 num=20
 thread_num=10
 checkThrends=[]
 url='YOUR PROXY URL' #提取代理的网站。
 req=request.urlopen(url).read()
 req=str(req,encoding='utf-8')
 list=req.split('\r\n') #网站返回的是字符串格式,用'\r\n'进行分割
 rawProxyList=list
 print('get raw proxy')
 for i in rawProxyList:
  print(i)
 # s=proxycheck_test(rawProxyList)
 batch_size=int((len(rawProxyList)+thread_num-1)/thread_num)
 print(batch_size)
 for i in range(thread_num):
  t=proxycheck(rawProxyList[batch_size*i:batch_size*(i+1)])
  checkThrends.append(t)
 for i in range(checkThrends.__len__()):
  checkThrends[i].start()
 for i in range(checkThrends.__len__()):
  checkThrends[i].join()
 print(checkedProxyList.__len__(),' useful proxy is find')
 for i in checkedProxyList:
  print(i)

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python描述数据结构学习之哈夫曼树篇

    Python描述数据结构学习之哈夫曼树篇

    这篇文章主要给大家介绍了关于Python描述数据结构学习之哈夫曼树篇的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Django session登陆并获取值的实例

    Django session登陆并获取值的实例

    这篇文章主要介绍了Django session登陆并获取值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • OpenCV特征匹配和单应性矩阵查找对象详解

    OpenCV特征匹配和单应性矩阵查找对象详解

    这篇文章主要为大家介绍了OpenCV特征匹配和单应性矩阵查找对象详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Python面向对象之类和实例用法分析

    Python面向对象之类和实例用法分析

    这篇文章主要介绍了Python类和实例用法,较为详细的分析了Python面向对象程序设计中类、实例、构造函数、析构函数、私有变量等相关概念与使用技巧,需要的朋友可以参考下
    2019-06-06
  • python 回调函数和回调方法的实现分析

    python 回调函数和回调方法的实现分析

    这篇文章主要介绍了python 回调函数和回调方法的实现分析,需要的朋友可以参考下
    2016-03-03
  • Python交换字典键值对的四种方法实例

    Python交换字典键值对的四种方法实例

    字典中有成对出现的键和值,但是字典中的键值对不是都能修改的,只有值才能修改,下面这篇文章主要给大家介绍了关于Python交换字典键值对的四种方法,需要的朋友可以参考下
    2022-12-12
  • python smtplib模块自动收发邮件功能(二)

    python smtplib模块自动收发邮件功能(二)

    这篇文章主要为大家详细介绍了python smtplib模块自动收发邮件功能的第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 在Django模型中的Mysql安装全过程

    在Django模型中的Mysql安装全过程

    这篇文章主要介绍了在Django模型中的Mysql安装全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Python中json.dumps()函数使用和示例

    Python中json.dumps()函数使用和示例

    这篇文章主要介绍了Python中json.dumps()函数使用和示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Pandas中inf值替换的方法

    Pandas中inf值替换的方法

    本文主要介绍了Pandas中inf值替换的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论