内容纲要
urllib.request
根据 python 文档的说法,http.client 是个低级的 http 客户端,而 urllib.request 是高级的,那就用 urllib.request 吧
- https://docs.python.org/3/library/urllib.request.html
- https://docs.python.org/3/howto/urllib2.html#urllib-howto
定义:打开 URL 的扩展库
说明:用来打开 URL(多数是 HTTP) 的函数和类,支持基本的或需认证的 URL,重定向,cookie 等
函数
- urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=False, context=None)
- url – string 或 Request 对象
- data – 字节对象,需要发送给服务器的数据,None 表示没有要发送的数据,也可以是个可迭代对象,所以在请求头里 Content-Length 值必须指定。当前,仅 HTTP 请求使用 data 参数;如果提供该参数,则 HTTP 请求为 POST
- data 应是标准 application/x-www-form-urlencoded 格式的缓冲区。urllib.parse.urlencode() 函数接收一个 mapping 或 2元组序列并返回一个格式的 ASCII 字符串。作为参数,data 应编码为字节
- urllib.request 使用 HTTP/1.1 且包含 Connection:close 请求头
- timeout – 可选参数,指定一个以秒为单位的超时时间(例如连接超时),如未指定则使用全局设定。仅用于 HTTP, HTTPS, FTP
- context – 如果指定,必须是 ssl.SSLConext 实例,描述 SSL 的选项
- cafile, capath – 可选参数,用于 HTTPS 请求的一组可信 CA 证书。cafile 是包含一个或多个 CA 证书的文件,与之相反,capath 是包含了一个或多个证书文件的目录
- cadefault – 忽略该参数
- 返回一个 context manager 对象,有以下方法
- geturl() – 返回获取的资源的 URL,用来判断是否跟随了一个跳转
- info() – 返回网页的元数据,例如头信息
- getcode() – 返回 HTTP 相应码
- 对于 HTTP 和 HTTPS URL,返回一个 http.client.HTTPResponse 对象,除了上面的 3 个方法,还有 reason 属性
- 对于 FTP,文件,返回 urllib.response.addinfourl 对象
- 协议错误会导致 URLError
- 可能返回 None,如果没有请求处理器的话
- 如果检测到代理设置(例如,*_proxy 环境变量诸如 http_proxy),ProxyHandler 是默认安装的
- urllib.urlopen 函数不再继续,urllib.request.urlopen() 和 urllib2.urlopen 是等效的
- urllib.request.install_opener(opener)
- 安装一个 OpenerDirector 实例作为默认的全局 opener。该方法只有你想要 urlopen 使用这个 opener 时才有必要,否则应该调用 OpenerDirector.open()
- urllib.request.build_opener([handler,…])
- 太多了不写了
类
- urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
- urllib.request.OpenerDirector
- 太多了不写了
url.parse
对 url 及其参数进行编码
http.cookiejar
使 urllib.request 库支持 cookie
html.parse
解析 html
json
解析 josn
os 和 os.path
目录操作,包括创建目录及进入目录
500px 系列二:预备知识