您的位置:新闻资讯 >文章内容
如何通过python验证抓取的代理IP是否有效
来源:本站 作者:jinglingdaili 时间:2019-04-11 17:38:22

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


通过python验证代理IP是否有效


那么问题来了,如何抓取免费代理IP呢?又如何多线程验证代理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虽然是免费,但时间成本更昂贵,为了提升工作效率,还是建议去使用付费的。

相关文章内容简介
在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部