购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 代理服务

3.3.1 代理的应用

实例3.12 通过代理发送请求

(实例位置:资源包\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地址失效或错误所提示的异常信息

3.3.2 获取免费的代理IP地址

为了避免爬取目标网页的后台服务器对我们实施封锁IP地址的操作,我们可以每发送一次网络请求就更换一个IP地址,从而降低被发现的风险。其实在获取免费的代理IP地址之前,需要先找到提供免费代理IP地址的网页,然后通过爬虫技术将大量的代理IP地址提取并保存至文件。提供免费代理IP地址的网站很多,用户可以通过搜索引擎查询,或者参考本书附带的“AI辅助编程”视频,通过现在流行的AI工具去查询。

3.3.3 检测代理IP地址是否有效

实例3.13 检测代理IP地址是否有效

(实例位置:资源包\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学码 mNt9gL/VjIi+NUpscv7nh6nt99TlzfTqGcdbPf1SQupKsclXZ8znNprzhgFdKgue

点击中间区域
呼出菜单
上一章
目录
下一章
×