提供免费代理IP的网页有很多,但是经过测试我们会发现并不是所有的免费代理IP都是有效的,甚至更不是匿名IP(即获取远程访问用户的IP地址是代理服务器的IP地址,不是用户本地真实的IP地址,)。所以要使用我们爬取下来的免费代理IP,就需要对这个IP进行检测。
实现检测免费代理IP是否可用时,首先需要读取保存免费代理IP的文件,然后对代理IP进行遍历并使用免费的代理IP发送网络请求,而请求地址可以使用查询IP位置的网页。如果网络请求成功说明免费的代理IP可以使用,并且还会返回当前免费代理IP的匿名地址。代码如下:
01 import requests # 导入网络请求模块
02 import pandas # 导入pandas模块
03 from lxml import etree # 导入HTML解析模块
04
05 ip_table = pandas.read_excel('ip.xlsx') # 读取代理IP文件内容
06 ip = ip_table['ip'] # 获取代理ip列信息
07 # 头部信息
08 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
09 'AppleWebKit/537.36 (KHTML, like Gecko) '
10 'Chrome/72.0.3626.121 Safari/537.36'}
11 # 循环遍历代理IP并通过代理发送网络请求
12 for i in ip:
13 proxies = {'http': 'http://{ip}'.format(ip=i),
14 'https': 'https://{ip}'.format(ip=i)}
15 try:
16 response = requests.get('http://202020.ip138.com/',
17 headers=headers,proxies=proxies,timeout=2)
18 if response.status_code==200: # 判断请求是否成功,请求成功说明代理IP可用
19 response.encoding='utf-8' # 进行编码
20 html = etree.HTML(response.text) # 解析HTML
21 info = html.xpath('/html/body/p[1]//text()')
22 print(info) # 输出当前ip匿名信息
23 except Exception as e:
24 pass
25 # print('错误异常信息为:',e) # 打印异常信息
程序运行结果如图1所示。
图1 打印可用的匿名代理ip
注意:如果以上示例代码运行出错,可能是查询IP的请求地址出现问题,读者可以根据自己查找的(IP查询)请求地址进行更换。
今天的技能你get√了吗?想学习更多关于网络爬虫的硬核技能,推荐大家学习《Python网路爬虫从入门到实践》:全彩印刷,书中全面细致的讲解了关于Python网络爬虫开发所需的基础知识及核心技术,通过知识讲解→快速示例→综合应用→实战项目,四位一体的方式进行讲解,循序渐进,由浅入深,让大家快速达到理解和应用的目的,同时还设有技术交流群,图书作者和技术老师会在统一时间在线答疑哦~
全彩印刷,每满100减50,店铺首页领券更划算哦~
点我购买:《Python网络爬虫从入门到实践》
End
目前100000+人已关注加入我们
点击阅读原文
进入明日科技京东自营店↓↓↓