![Python网络爬虫从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/915/44509915/b_44509915.jpg)
5.3 代理服务
5.3.1 代理的应用
【例5.12】 通过代理发送请求。(实例位置:资源包\Code\05\12)
在爬取网页的过程中,经常会出现不久前可以爬取的网页现在无法爬取的情况,这是因为IP被爬取网站的服务器所屏蔽了。此时代理服务可以解决这一麻烦,在设置代理时,首先需要找到代理地址,如117.88.176.38,对应的端口号为3000,完整的格式为117.88.176.38:3000。代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P81_52579.jpg?sign=1738961858-QvaGhTN3mx4PH2k6I8A39kmDQbxuNP5a-0-e38e2fd0309fee692c208b919535908c)
注意
由于示例中代理IP是免费的,所以使用的时间不固定,超出使用的时间范围内该地址将失效。在地址失效时或者地址错误时,控制台将显示如图5.17所示的异常信息。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P82_15240.jpg?sign=1738961858-Z3TdBwExhks5THmn27cuCwu6V14EXUck-0-722fe15bc2b4c00ef4f49fec2bf77e7f)
图5.17 代理地址失效或错误所提示的异常信息
5.3.2 获取免费的代理IP
【例5.13】 获取免费的代理IP。(实例位置:资源包\Code\05\13)
为了避免爬取目标网页的后台服务器,对我们实施封锁IP的操作。我们可以每发送一次网络请求更换一个IP,从而降低被发现的风险。其实在获取免费的代理IP之前,需要先找到提供免费代理IP的网页,然后通过爬虫技术将大量的代理IP提取并保存至文件中。以某免费代理IP网页为例,实现代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P82_52581.jpg?sign=1738961858-cuOQvrtyIf4k6AXWZ8h0zc5JQ6QcnUWD-0-be1f21beb96969eee2c292b51cde52da)
程序代码运行后控制台将显示如图5.18所示的代理IP与对应端口,项目文件中将自动生成ip.xlsx文件,文件内容如图5.19所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P83_15347.jpg?sign=1738961858-yMUil36kXY0EMoh4KMMPDz9XWWEc1a0r-0-73c6149a691f623e6ac3c7b62c80cb81)
图5.18 控制台显示代理IP与对应端口
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P83_15353.jpg?sign=1738961858-B294bEryFPJGqAiHxUQ0OceRFI95vKRD-0-96b570ea0913533272b2618768030bc1)
图5.19 ip.xlsx内容
5.3.3 检测代理IP是否有效
【例5.14】 检测代理IP是否有效。(实例位置:资源包\Code\05\14)
提供免费代理IP的网页有很多,但是经过测试会发现并不是所有的免费代理IP都是有效的,甚至不是匿名IP(即获取远程访问用户的IP地址是代理服务器的IP地址,不是用户本地真实的IP地址)。所以要使用我们爬取下来的免费代理IP,就需要对这个IP进行检测。
实现检测免费代理IP是否可用时,首先需要读取保存免费代理IP的文件,然后对代理IP进行遍历并使用免费的代理IP发送网络请求,而请求地址可以使用查询IP位置的网页。如果网络请求成功,说明免费的代理IP可以使用,并且还会返回当前免费代理IP的匿名地址。代码如下:
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P83_52583.jpg?sign=1738961858-lslklxJujrp7MnfQOcto6CzDCvtVCde8-0-4d11d9848c21cfdba870be90df744826)
程序运行结果如图5.20所示。
![](https://epubservercos.yuewen.com/8BF9E9/23721540501937606/epubprivate/OEBPS/Images/Figure-P84_15575.jpg?sign=1738961858-Wrcwyd9DAt5XxQV0uzU0jgMB7MIVCROv-0-ab44d181d4c47a73e71b183cf48cf53b)
图5.20 打印可用的匿名代理IP