实战Python网络爬虫
上QQ阅读APP看书,第一时间看更新

5.4 代理IP

代理IP的原理:以本机先访问代理IP,再通过代理IP地址访问互联网,这样网站(服务器)接收到的访问IP就是代理IP地址。

Urllib提供了urllib.request.ProxyHandler()方法可动态设置代理IP池,代理IP主要以字典格式写入方法。完成代理IP设置后,将设置好的代理IP写入urllib.request.build_opener()方法,生成对象opener,然后通过opener的open()方法向网站(服务器)发送请求。

沿用前面章节的例子,将例子改为使用代理IP访问网站,代码如下:

注意,由于使用代理IP,因此连接IP的时候有可能出现超时而导致报错,遇到这种情况只要更换其他代理IP地址或者再次访问即可。以下是常见的报错信息。

● ConnectionResetError:[WinError 10054]远程主机强迫关闭了一个现有的连接。

● urllib.error.URLError:urlopen error Remote end closed connection without response(结束没有响应的远程连接)。

● urllib.error.URLError: urlopen error [WinError 10054]远程主机强迫关闭了一个现有的连接。

● TimeoutError: [WinError 10060]由于连接方在一段时间后没有正确答复或连接的主机没有反应,因此连接尝试失败。

● urllib.error.URLError:urlopen error [WinError 10061]由于目标计算机拒绝访问,因此无法连接。