我们在爬取页面的时候,如果长时间使用一个网址去爬取某个网站,就会受爬去限制,此时,我们引用了代理IP,IP随时在变化,也就不会被限制了
一下是国内提供免费代理IP的地址:http://www.xicidaili.com/
我们打开这个网页后可以看到如下图的代理IP与地址
上图标记部分就是一个代理IP与其端口号
那么下面我们就开始使用代理IP来爬取内容
首先,我们需要自定义opener,为什么要自定义opener呢?那是由于,基本的urlopen方法不支持代理,所以需要支持这个功能:
- 使用相关的Handler处理器来创建特定的处理器对象
- 然后通过urllib.request.build_opener方法使用这些处理器对象,创建自定义的opener对象
- 将自定义的opener对象定义为全局opener(表示如果但凡后边用到urlopen,都将使用这个opener)
具体实现代码如下:
import urllib.request ''' 定义函数 ''' def proxy_use(url,tm_ip): proxy = urllib.request.ProxyHandler({"http":tm_ip}) opener = urllib.request.build_opener(proxy,urllib.request.HTTPHandler) #定义全局opener urllib.request.install_opener(opener) #获取网页内容 content = urllib.request.urlopen(url).read().decode("UTF-8","ignore") return content ip = "14.118.254.1:6666" url = "http://www.baidu.com" content = proxy_use(url,ip) print(len(content))
运行结果如下: