代理ip

>

换ip软件

>

http代理

>

ip代理

您的位置:首页 > 新闻资讯 > 文章内容
python如何抓取代理IP并且验证是否有效
来源:网连代理 作者:admin 时间:2019-07-02 16:47:34

  尽管知道免费代理IP有效率并不怎么好,但毕竟是天上掉下来的馅饼。还是有很多人去爬取免费代理IP用来做爬虫的,不过也得减缓爬取速度,避免影响人家网站的正常运行。


  那么问题来了,如何抓取免费代理IP呢?又如何多线程验证代理IP是否有效呢?


python如何抓取代理IP并且验证是否有效


  一、抓取代理IP


  首先找一个提供免费代理IP的网站,这个网上有很多,这里就不举例说明了。


  import urllib.request


  import urllib


  import re


  import time


  import random


  #抓取代理IP


  ip_totle=[]  #所有页面的内容列表


  for page in range(2,6):


  url='http:www.***.com/***/'+str(page)


  headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64)"}


  request=urllib.request.Request(url=url,headers=headers)


  response=urllib.request.urlopen(request)


  content=response.read().decode('utf-8')


  print('get page',page)


  pattern=re.compile('<td>(\d.*?)</td>')  #截取<td>与</td>之间第一个数为数字的内容


  ip_page=re.findall(pattern,str(content))


  ip_totle.extend(ip_page)


  time.sleep(random.choice(range(1,3)))


  #打印抓取内容


  print('代理IP地址     ','\t','端口','\t','速度','\t','验证时间')


  for i in range(0,len(ip_totle),4):


  print(ip_totle[i],'    ','\t',ip_totle[i+1],'\t',ip_totle[i+2],'\t',ip_totle[i+3])


  二、验证代理IP是否有效


  免费代理IP的有效率很低,所以在使用前还是需要验证下代理IP是否有效比较好,这样比较节省时间。


  import urllib.request


  url = "http://www.***.com/***"  #打算抓取内容的网页


  proxy_ip={'http': '37.27.32.42:80'}  #想验证的代理IP


  proxy_support = urllib.request.ProxyHandler(proxy_ip)


  opener = urllib.request.build_opener(proxy_support)


  opener.addheaders=[("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64)")]


  urllib.request.install_opener(opener)


  print(urllib.request.urlopen(url).read())


  三、多线程快速验证


  按顺序逐个验证代理IP的有效性速度比较慢,python中有多线程模块,多线程类似于同时执行多个不同程序,使用多线程可以把占据长时间的程序中的任务放到后台去处理,在一些需要等待的任务实现上线程就比较有用了,由于篇幅原因,这里就不贴多线程的代码了,各位自己琢磨下就明白了。


  最后多嘴一句,免费代理IP虽然是免费,但时间成本更昂贵,为了提升工作效率,还是建议去付费,网连代理的短效优质代理IP和一手私密代理IP都很适合用来做爬虫不妨咨询一二。


相关文章内容简介
推荐阅读