【Python3 爬虫】12_代理IP的使用

我们在爬取页面的时候,如果长时间使用一个网址去爬取某个网站,就会受爬去限制,此时,我们引用了代理IP,IP随时在变化,也就不会被限制了

一下是国内提供免费代理IP的地址:http://www.xicidaili.com/

我们打开这个网页后可以看到如下图的代理IP与地址

image

上图标记部分就是一个代理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))

运行结果如下:

image

posted @ 2018-04-21 22:26  OLIVER_QIN  阅读(269)  评论(0编辑  收藏  举报