(实例位置:资源包\Code\03\12)
在爬取网页的过程中,经常会出现不久前可以爬取的网页现在无法爬取的情况,这是因为IP地址被爬取网站的服务器屏蔽了。此时代理服务可以解决这一麻烦,设置代理时,首先需要找到代理IP地址,例如117.88.176.38,对应的端口号为3000,完整的格式为117.88.176.38:3000。代码如下:
由于示例中代理IP地址是免费的,所以使用的时间不固定,超出使用的时间范围时,该地址将失效。在地址失效或者地址错误时,控制台将显示如图3.17所示的异常信息。如果需要获取可用的代理IP地址,可以参考3.3.2节与3.3.3节中的内容。
图3.17 代理IP地址失效或错误所提示的异常信息
为了避免爬取目标网页的后台服务器对我们实施封锁IP地址的操作,我们可以每发送一次网络请求就更换一个IP地址,从而降低被发现的风险。其实在获取免费的代理IP地址之前,需要先找到提供免费代理IP地址的网页,然后通过爬虫技术将大量的代理IP地址提取并保存至文件。提供免费代理IP地址的网站很多,用户可以通过搜索引擎查询,或者参考本书附带的“AI辅助编程”视频,通过现在流行的AI工具去查询。
(实例位置:资源包\Code\03\13)
提供免费代理IP地址的网页有很多,但是经过测试,你会发现并不是所有的免费代理IP地址都是有效的,甚至也不是匿名IP地址(即获取远程访问用户的IP地址是代理服务器的IP地址,不是用户本地真实的IP地址)。所以若要使用我们爬取下来的免费代理IP地址,就需要对这个IP地址进行检测。
实现检测免费代理IP地址是否可用时,首先需要读取保存免费代理IP地址的文件,然后对代理IP地址进行遍历,并使用免费的代理IP地址发送网络请求,而请求地址可以使用查询IP地址位置的网页。如果网络请求成功,则说明免费的代理IP地址可以使用,而且还会返回当前免费代理IP地址的匿名地址。代码如下:
程序运行结果如图3.18所示。
图3.18 打印可用的匿名代理IP地址
如果以上示例代码运行出错,可能是查询IP地址的请求地址出现问题,读者可以根据自己查找的请求地址进行更换。
本章e学码:关键知识点拓展阅读
Base64
上传
Keep-Alive
提交表单
二进制文件
网络超时
e学码