源代码: Lib/urllib/
urllib 是一个收集了多个用到 URL 的模块的包:
urllib.request 打开和读取 URL
urllib.error 包含 urllib.request 抛出的异常
urllib.parse 用于解析 URL
urllib.robotparser 用于解析 robots.txt 文件
源码: Lib/urllib/request.py
urllib.request 模块定义了适用于在各种复杂情况下打开 URL(主要为 HTTP)的函数和类 — 例如基本认证、摘要认证、重定向、cookies 及其它。
urllib.request 模块定义了以下函数:
- urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)¶
打开统一资源定位地址 url,可以是一个字符串或一个 Request 对象。
- urllib.request.install_opener(opener)
安装OpenerDirector实例作为默认全局打开器。安装一个开启器是必要的,如果你想urlopen使用该开启器;否则,只需调用OpenerDirector.open()而不是urlopen()。代码没有检查真正的OpenerDirector,任何具有适当接口的类都可以工作。
- urllib.request.build_opener([handler, ...])
返回一个OpenerDirector实例,该实例按照给定的顺序连接处理程序。处理程序可以是BaseHandler的实例,也可以是BaseHandler的子类(在这种情况下,必须能够不使用任何参数调用构造函数)。ProxyHandler(如果检测到代理设置),UnknownHandler, HTTPHandler, HTTPDefaultErrorHandler, HTTPRedirectHandler, FTPHandler, FileHandler, HTTPErrorProcessor。
- urllib.request.pathname2url(path)
将路径名路径从路径的本地语法转换为URL的路径组件中使用的形式。这不会产生一个完整的URL。返回值已经被quote()函数括起来了。
- urllib.request.url2pathname(path)
将路径组件路径从按百分比编码的URL转换为路径的本地语法。这不能接受完整的URL。这个函数使用unquote()来解码路径。
- urllib.request.getproxies()
这个helper函数将scheme的字典返回给代理服务器URL映射。它扫描环境中的变量<scheme>_proxy,在不区分大小写的方法中,首先扫描所有操作系统,如果找不到它,就从Mac OSX系统配置和Windows系统注册表中查找代理信息。如果同时存在小写和大写环境变量(且不一致),则首选小写。
- class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)¶
这个类是URL请求的抽象。
- class urllib.request.OpenerDirector
OpenerDirector类通过链接在一起的BaseHandlers打开url。它管理处理程序的链接,并从错误中恢复。
- class urllib.request.BaseHandler
这是所有注册处理程序的基类——只处理注册的简单机制。
- class urllib.request.HTTPDefaultErrorHandler
定义HTTP错误响应的默认处理程序的类;所有响应都被转化为HTTPError异常。
- class urllib.request.HTTPRedirectHandler
一个用于处理重定向的类。
- class urllib.request.HTTPCookieProcessor(cookiejar=None)
一个用于处理 HTTP Cookies 的类。
- class urllib.request.ProxyHandler(proxies=None)
导致请求通过代理。如果指定了代理,它必须是映射协议名称到代理的url的字典。默认情况下从环境变量<protocol>_proxy中读取代理列表。如果没有设置代理环境变量,那么在Windows环境中,从注册表的Internet设置部分获取代理设置,在Mac OS X环境中,从OS X系统配置框架获取代理信息。
- class urllib.request.HTTPPasswordMgr
保持数据库的(域,uri) ->(用户,密码)映射。
- class urllib.request.HTTPPasswordMgrWithDefaultRealm
保持数据库的(域,uri) ->(用户,密码)映射。None的领域被认为是all -all领域,如果没有其他领域符合该领域,则对其进行搜索。
- class urllib.request.HTTPPasswordMgrWithPriorAuth
HTTPPasswordMgrWithDefaultRealm的一个变体,它也有一个uri -> is_authenticated映射的数据库。可以被BasicAuth处理程序用于确定何时立即发送身份验证凭据,而不是首先等待401响应。
- class urllib.request.HTTPHandler
处理打开HTTP url的类。
- class urllib.request.HTTPSHandler(debuglevel=0, context=None, check_hostname=None)
处理HTTPS url打开的类。上下文和check_hostname与http.client.HTTPSConnection中的含义相同。
- class urllib.request.FileHandler
打开本地文件。
- class urllib.request.DataHandler
开放数据的url。
- class urllib.request.FTPHandler
打开 FTP 统一资源定位地址。
- class urllib.request.CacheFTPHandler
打开FTP url,保持打开FTP连接的缓存以最小化延迟。
- class urllib.request.UnknownHandler
用于处理未知url的all类。
- class urllib.request.HTTPErrorProcessor
处理HTTP错误响应。
Request 对象
下面的方法描述了Request的公共接口,因此所有这些方法都可以在子类中被覆盖。它还定义了几个公共属性,客户机可以使用这些属性检查解析后的请求。
- Request.full_url
传给构造函数的原始 URL。
- Request.type
The URI scheme.
- Request.host
URI权限,通常是主机,但也可能包含一个由冒号分隔的端口。
- Request.origin_req_host
请求的原始主机,不含端口。
- Request.selector
URI 路径。若 Request 使用代理,选择器将会是传给代理的完整 URL。
- Request.data
The entity body for the request, or None if not specified.
- Request.unverifiable
布尔,表明请求是否为 RFC 2965 中定义的无法证实的。
- Request.method
要使用的HTTP请求方法。默认情况下,它的值是None,这意味着get_method()将对要使用的方法进行常规计算。它的值可以通过在请求子类的类级别上设置默认值来设置(从而覆盖get_method()中的默认计算),或者通过方法参数向请求构造函数传递一个值。
- Request.get_method()
返回一个指示HTTP请求方法的字符串。如果请求。方法不是None,返回它的值,否则返回'GET'如果请求。data是None,或者“POST”(如果不是的话)。这只对HTTP请求有意义。
在 3.3 版更改: get_method now looks at the value of Request.method.
- Request.add_header(key, val)
向请求添加另一个头。目前,除了HTTP处理程序外,所有处理程序都忽略了头,在HTTP处理程序中,头被添加到发送到服务器的头列表中。注意,不能有多个头具有相同的名称,并且以后的调用将覆盖以前的调用,以防键冲突。目前,这不是HTTP功能的损失,因为当使用超过一次有意义的所有头有一个(特定的头)方式获得相同的功能使用一个头。
- Request.add_unredirected_header(key, header)
添加一个不会被加入重定向请求的头部。
- Request.has_header(header)
返回实例是否有命名头(检查常规的和未重定向的)。
- Request.remove_header(header)
从请求实例中删除命名头(包括常规头和未重定向头)。
- Request.get_full_url()
返回构造器中给定的 URL。
返回 Request.full_url
- Request.set_proxy(host, type)
通过连接到代理服务器准备请求。主机和类型将替换实例的主机和类型,实例的选择器将是构造函数中给出的原始URL。
- Request.get_header(header_name, default=None)
返回给定标头的值。如果标题不存在,则返回默认值。
- Request.header_items()
返回请求头的元组列表(header_name, header_value)。