首页 > 技术文章 > urllib基本使用-Handler和自定义的opener()

AndyChen2015 2017-08-23 15:10 原文

"""
基本的urlopen()方法不支持代理、cookie等其他的HTTP/HTTPS高级功能。所以要支持这些功能:
使用相关的 Handler处理器 来创建特定功能的处理器对象;
然后通过 urllib.requestbuild_opener()方法使用这些处理器对象,创建自定义opener对象;
使用自定义的opener对象,调用open()方法发送请求。
如果程序里所有的请求都使用自定义的opener,
可以使用urllib2.install_opener() 将自定义的 opener 对象 定义为 全局opener,
表示如果之后凡是调用urlopen,都将使用这个opener(根据自己的需求来选择)
"""
import urllib.request

# 构建一个HTTPHandler 处理器对象,支持处理HTTP请求
http_handler = urllib.request.HTTPHandler()

# 构建一个HTTPHandler 处理器对象,支持处理HTTPS请求
#http_handler = urllib.request.HTTPSHandler()

# 构建一个HTTPHandler 处理器对象,支持处理HTTP请求,同时开启Debug Log,debuglevel 值默认 0
http_handler = urllib.request.HTTPHandler(debuglevel=1)

# 调用urllib.request.build_opener()方法,创建支持处理HTTP请求的opener 对象
opener = urllib.request.build_opener(http_handler)

# 构建Request请求
request = urllib.request.Request('http://www.baidu.com/')

# 调用自定义opener对象的open()方法,发送request请求
response = opener.open(request)

print(response.read().decode('utf-8'))

推荐阅读