urllib.request 模块包含一系列的函数和类应用,这些应用程序可以帮我们在复杂的环境中打开一些链接和网址(URL)(大部分是 http)操作的类型包括 基本的链接、摘要认证、url重定向、cookies 等。
urllib.request模块定义了以下功能:
urllib.request.
urlopen
( url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False,context=None )
1)参数 url 接受一个因特网链接,用字符串或 request 对象来表示
2)参数 data 用来指定数据的提交方式,此参数必须为 byte 类型。data 也可以是 iterable对象,在这种情况下,消息实体的长度必须在 http header 中体现,目前 http 协议是唯一使用于此参数的协议,仅用于需要使用 POST 方式取代 GET 方式时。
data 参数的书写应该符合标准格式:“application/x-www-form-urlencoded“。
3)可选参数 timeout 用来指定一个以秒为单位的时间值,超时无响应即终止链接。如果不指定此参数,就会使用全局的默认设置,此参数仅适用于 http、https、ftp 协议。
4)可选参数 cafile 和 capath 用来为 HTTPS 请求指定一组受信任的 CA 证书。cafile 用来绑定单一的证书文件,capath 指向一个存在证书集合的目录
5)cadefault:略
urlopen函数总是返回一个类似文本类型的对象,可以接受上下文管理,它具有如下方法:
geturl()
——返回 url的真实地址,常被用来判断接下来是否为链接重定向。
info() —— 返回网址的元信息,例如标题。
getcode() —— 返回响应的 HTTP 状态码(如 404)
对于 HTTP 和 HTTPS 链接来说,这一函数返回一个稍加修改的 http.client.
HTTPResponse() 函数对象,除了上述三种新方法外,msg 属性作为 reason 属性也包含了相同的信息—— 由服务器返回的 reason 语句,而不是response headers,因为它是
HTTPResponse
文档中指定的。
在 3.2 版本里的改变:添加了 cafile, cadefault 和 capath
如果 ssl 支持 Server Name 扩展的话,则可以支持HTTPS 虚拟主机。
现在 data 可以是一个可迭代对象
例子:
with urllib.request.urlopen( 'http://www.python.org/' ) as f: print(f.read(100).decode('utf-8')) ...... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm
urllib.request.
install_opener( opener ).
安装一个 OpenerDirector 实例作为默认的全局 o
pener
,如果你想让 urlopen 使用那个 opener,只需要安装它即可,或者你可以简单的调用 OpenerDirector.open() 代替的 urlopen() 即可。
。。。
.