提供免费代理IP的网页很多,但经过测试会发现,并不是所有的免费代理IP都是有效的,匿名IP就更少了(即远程访问用户的IP地址是代理服务器的IP地址,而不是用户的本地真实IP地址)。因此,为了使用我们爬下来的免费代理IP,我们需要检测这个IP。
在检测自由代理IP是否可用时,我们首先需要读取存储自由代理IP的文件,然后遍历代理IP并使用自由代理IP发送网络请求,请求地址可以使用网页查询IP位置。如果网络请求成功,可以使用免费代理IP,同时还会返回当前免费代理IP的匿名地址。代码如下:
# -*-编码: UTF-8 -*-
'''
导入请求#导入网络请求模块
将熊猫导入为pd #导入熊猫模块
从xml导入etree #导入HTML解析模块
IP _ table=PD . Read _ excel(' IP . xlsx ')#读取代理IP文件的内容。
Ip_list=ip_table['ip'] #获取代理Ip信息
#标题信息
标题={ 0
用户代理' : ' Mozilla/5.0(Windows NT 10.0;Win64x64)applebwebkit/537.36(KHTML,像Gecko)Chrome/86 . 0 . 4240 . 193 Safari/537.36’
}
#循环通过代理IP并通过代理发送网络请求
对于ip_list:中的ip
#这里增加了两个代理,http和https。这是因为一些网页使用http协议,而另一些使用https协议。
#为了在这两种网页上流畅地使用代理,通常会同时编写。当然,如果确定了网页的请求类型,只能写一种类型。
代理={'http': 'http://{ip} '。格式(ip=ip),
https“:”https://{ IP }。格式(ip=ip)}
尝试:
response=requests . get(' https://www . Baidu.com/s?IE=UTF-8F=8RSV _ BP=1TN=百度WD=IP地址',
标头=标头,超时=3,代理=代理)
我响应。status _ code==200: #确定请求是否成功,这意味着代理IP可用。
Response.encoding='utf8' #用于编码
HTML=etree.html(回应.文本)#解析HTML
info=html . XPath('//*[@ id=' 1 ']/div[1]/div[1]/div[2]/table//tr/TD//text()')[1:]
信息=' '。加入(信息)。替换(' xa0 ',' ')。条带()。替换(‘本地IP:’、‘本地IP:’)
打印(信息)#输出当前IP的匿名信息
e:除外
#打印(e) #打印异常信息
及格