Python 网络爬虫笔记-Requests 库入门
爬取网页带通用代码框架
1 | import requests |
HTTP 协议和Requests 库的主要方法
HTTP协议
HTTP, Hypertext Transfer Protocol, 超文本传输协议。
HTTP 是一个基于“请求与响应”模式的、无状态的应用层协议。
HTTP 协议采用 URL 作为定位网络资源的标识。
URL 格式
https://host[:port][path]
host: 合法的 Internet 主机域名或 IP 地址
port: 端口号, 缺省端口号为 80
path: 请求资源的路径
HTTP URL 的理解:
URL 是通过 HTTP 协议存取资源的 Internet 路径, 一个 URL 对应一个数据资源
HTTP 协议对资源的操作
方法 | 说明 |
---|---|
GET | 请求获取 URL 位置的资源 |
HEAD | 请求获取 URL 位置资源的响应消息报告, 即获得该资源的头部信息 |
POST | 请求向 URL 位置的资源后附加新的数据 |
PUT | 请求向 URL 位置存储一个资源,覆盖原 URL 位置的资源 |
PATCH | 请求局部更新 URL 位置的资源,级改变该处资源的部分内容 |
DELETE | 请求删除 URL 位置存储的资源 |
理解 PATCH 和 PUT 的区别
假设 URL 位置有一组数据UserInfo
, 包括UserID
UserName
等 20 个字段.
需求:用户修改UserName
, 其他不变
- 采用 PATCH, 仅向 URL 提交
UserName
的局部更新请求 - 采用 PUT, 必须将所有 20 个字段一并提交到 URL, 未提交的字段被删除
HTTP 协议与 Requests 库
HTTP 协议方法 | Requests 库方法 | 功能一致性 |
---|---|---|
GET | requests.get() | 一致 |
HEAD | requests.head() | 一致 |
POST | requests.post() | 一致 |
PUT | requests.put() | 一致 |
PATCH | requests.patch() | 一致 |
DELETE | requests.delete() | 一致 |
Requests 库主要方法解析
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础方法 |
requests.get() | 获取 HTML 网页的主要方法,对应于 HTTP 的 GET |
requests.head() | 获取 HTML 网页头信息的方法,对应于 HTTP 的 HEAD |
requests.post() | 向 HTML 网页提交 POST 请求的方法,对应于 HTTP 的 POST |
requests.put() | 向 HTML 网页提交 PUT 请求的方法,对应于 HTTP 的 PUT |
requests.patch() | 向 HTML 网页提交局部修改请求,对应于 HTTP 的 PATCH |
requests.delete() | 向 HTML 页面提交删除请求,对应于 HTTP 的 DELETE |
requests.request(method, url, **kwargs)
method: 方法
url: 拟获取页面的 url 链接
**kwargs: 控制访问的参数, 均为可选项
** **kwargs **
params: 字典或字节序列, 作为参数增加到 url 中
1 | kv = {'key1' : 'value1', 'key2' : 'value2'} |
data: 字典 字节序列或文件对象, 作为 Request 的内容
1 | kv = {'key1' : 'value1', 'key2' : 'value2'} |
json: JSON 格式的数据, 作为 Request 的内容
1 | kv = {'key1' : 'value1'} |
headers: 字典, HTTP 定义头
1 | hd = {'user-agent' : 'Chrome/10'} |
cookies: 字典或 CookieJar, Request 中的 cookie
auth: 元祖, 支持 HTTP 认证功能
files: 字典类型,传输文件
1 | fs = {'file': open('data.xls', 'rb')} |
timeout : 设定超时时间, 秒为单位
proxies: 字典类型, 设定访问代理服务器, 可以增加登录认证
1 | pxs = {'http': 'http://user:pass@10.10.10.1:1234' |
allow_redirects: True/False, 默认为 True, 重定向开关
stream: True/False, 默认为 True, 获取内容立即下载开关
verify: True/False, 默认为 True, 认证 SSL 证书开关
cert: 本地 SSL 证书路径
requests.get(url, params = None, **kwargs)
url: 拟获取页面的 url 链接
params: url 中的额外参数, 字典或字节流格式, 可选
**kwargs: 12 个访问控制参数
requests.head(url, **kwargs)
url: 拟获取页面的 url 链接
**kwargs: 13 个访问控制参数
requests.head(url, data = None, json = None, **kwargs)
url: 拟获取页面的 url 链接
data: 字典 字节序列或文件, Request 的内容
json: JSON 格式的数据, Request 的内容
**kwargs: 11 个访问控制参数
requests.put(url, data = None, **kwargs)
url: 拟获取页面的 url 链接
data: 字典 字节序列或文件, Request 的内容
**kwargs: 12 个访问控制参数
requests.patch(url, data = None, **kwargs)
url: 拟获取页面的 url 链接
data: 字典 字节序列或文件, Request 的内容
**kwargs: 12 个访问控制参数
requests.delete(url, **kwargs)
url: 拟删除页面的 url 链接
**kwargs: 13 个访问控制参数