预备知识
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请求头
- data 应是标准 application/x-www-form-urlencoded 格式的缓冲区。
- 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 及其参数进行编码
https://docs.python.org/3/library/urllib.parse.html
http.cookiejar
使 urllib.request 库支持 cookie
https://docs.python.org/3/library/http.cookiejar.html
html.parse
解析 html
https://docs.python.org/3/library/html.parser.html
json
解析 josn
https://docs.python.org/3/library/json.html
os 和 os.path
目录操作,包括创建目录及进入目录