urlopen() 方法不支持代理、cookie 等其他的 HTTP/HTTPS 高级功能,需要自定义 opener。
如需频繁使用自定义的 opener,可将自定义的 opener 设置为默认全局 opener;否则的话,简单的使用 OpenerDirector.open() 来代替 urlopen() 即可。
示例:
from urllib import request
url = r'http://www.baidu.com'
req = request.Request(url)
# 定义 HTTPHandler
http_handler = request.HTTPHandler()
# 自定义 opener,返回 OpenerDirector 实例
opener = request.build_opener(http_handler)
# 发送请求
#response = opener.open(req)
# 定义全局 opener
request.install_opener(opener)
response = request.urlopen(req)
print(response.read())