request是最为底层方法,比起他的其他方法更为灵活,可选参数有:
参数名 | 说明 | 示例值 |
---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
requests.
head
(参数)head方法用于发送一个 HTTP HEAD 请求。HEAD 请求与 GET 请求类似,但服务器在响应 HEAD 请求时只返回响应头,不返回响应体。这在你只需要获取资源的元信息(如内容类型、内容长度、最后修改时间等)而不需要下载整个资源时非常有用。可选参数有:
参数名 | 说明 | 示例值 |
---|
|
|
|
|
|
|
requests.head()
就像是你去打听某件东西的情况,但不把东西拿回来。它只向服务器询问资源的一些基本信息,而不获取资源的具体内容。
requests.head()
可以获取服务器上资源的元信息,例如资源的大小、类型、最后修改时间等。这些信息都包含在响应头中。requests.get()
等方法,能节省大量的带宽和时间。比如你只想知道一个大文件的大小,而不需要下载它,就可以用 requests.head()
。 delete
用于发送 HTTP DELETE 请求,通常用于从服务器删除指定资源。该方法是 requests.request()
的封装,默认方法为 "DELETE"
。可选参数有:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
verify |
是否验证 SSL 证书(布尔值或 CA 文件路径) | False 或 "/path/to/ca.pem" |
requests.delete()
就像是你给服务器发了一个 “删除指令”,告诉服务器把某个特定的资源从它那里移除,比如删除一篇文章、一个用户账户等。
requests.get()
用于发送 HTTP GET 请求,从服务器获取指定资源。该方法是 requests.request()
的封装,默认方法为 "GET"
,适用于获取数据而非修改资源。可选参数有:
参数名 | 说明 | 示例值 |
---|---|---|
url | 请求的目标 URL | "https://api.example.com/data" |
params | URL 查询参数(字典或字节) | {"page": 2, "limit": 10} |
**kwargs | 其他可选参数,包括: | |
headers |
请求头字典 | {"User-Agent": "Mozilla/5.0"} |
cookies |
Cookie 字典或 CookieJar 对象 |
{"session_id": "12345"} |
auth |
认证信息(如 HTTPBasicAuth ) |
HTTPBasicAuth("user", "pass") |
timeout |
超时时间(秒) | 5 或 (3, 10) (连接超时 3 秒,读取超时 10 秒) |
verify |
是否验证 SSL 证书(布尔值或 CA 文件路径) | False 或 "/path/to/ca.pem" |
proxies |
代理配置 | {"http": "http://proxy.example.com:8080"} |
requests.get()
就像是你向服务器发送一个询问信息的请求,就如同你向图书馆管理员询问某本书的信息一样,然后等待服务器把你想要的信息给你返回回来。
requests.post
(参数) requests.post()
用于发送 HTTP POST 请求,通常用于向服务器提交数据,如表单数据、JSON 数据等。与 GET 请求不同,POST 请求的数据包含在请求体中,而不是 URL 中。可选参数有:
参数名 | 说明 | 示例值 |
---|---|---|
url | 请求的目标 URL | "https://api.example.com/submit" |
data | 表单数据(字典、字节或文件对象) | {"username": "user", "password": "pass"} |
json | JSON 格式的请求体(字典) | {"user": {"name": "John", "age": 30}} |
**kwargs | 其他可选参数,包括: | |
headers |
请求头字典 | {"Content-Type": "application/json"} |
cookies |
Cookie 字典或 CookieJar 对象 |
{"session_id": "12345"} |
auth |
认证信息(如 HTTPBasicAuth ) |
HTTPBasicAuth("user", "pass") |
timeout |
超时时间(秒) | 5 或 (3, 10) (连接超时 3 秒,读取超时 10 秒) |
verify |
是否验证 SSL 证书(布尔值或 CA 文件路径) | False 或 "/path/to/ca.pem" |
proxies |
代理配置 | {"http": "http://proxy.example.com:8080"} |
requests.post()
就像你往一个盒子里塞纸条(数据),然后寄给服务器,告诉它:"我要提交新东西啦!"
requests.put
是 Python requests
库中的一个方法,用于向指定的 URL 发送 HTTP PUT 请求。PUT 请求通常用于更新服务器上的资源,如果资源不存在,有些服务器也会创建新资源。可选参数有:
参数名 | 说明 | 示例值 |
---|---|---|
url | 请求的目标 URL | "https://api.example.com/resource/123" |
data | 表单数据或二进制数据(可选) | {"name": "new_value"} |
json | JSON 格式的请求体(可选) | {"user": {"age": 30}} |
**kwargs | 其他可选参数,包括: | |
headers |
请求头字典 | {"Content-Type": "application/json"} |
auth |
认证信息(如 HTTPBasicAuth ) |
HTTPBasicAuth("user", "pass") |
timeout |
超时时间(秒) | 5 或 (3, 10) (连接超时 3 秒,读取超时 10 秒) |
verify |
是否验证 SSL 证书(布尔值或 CA 文件路径) | False 或 "/path/to/ca.pem" |
requests.put()
好比你要更新一个已经存在的物品,而且是整个替换掉它。在网络请求里,就是向服务器发送请求来完全替换指定的资源。例如,你有一篇文章存在服务器上,现在你写了一篇全新的文章,想把原来那篇完全替换掉,就可以用 requests.put()
。
patch
用于发送 HTTP PATCH 请求,通常用于对服务器资源进行部分更新。与 PUT 方法不同,PATCH 只需发送需要修改的数据,而 PUT 需替换整个资源。可选参数有:
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
requests.patch()
好比你去修改一份已经存在的文件,只对文件里需要改动的部分进行修改,而不是把整个文件都替换掉,它是用来向服务器部分更新资源的。
requests.patch()
。比如你有一篇文章,只想修改其中的某一段文字,而不是重新上传整篇文章。etree
能够将 XML 或 HTML 文本解析为树形结构,方便后续对文档中的元素进行访问和操作。例如,使用 etree.HTML()
可以解析 HTML 文本,etree.XML()
可以解析 XML 文本。
解析后的树形结构由元素和属性组成,etree
支持对这些元素和属性进行增删改查等操作。比如可以获取元素的文本内容、修改元素的属性值等。
支持使用 XPath 表达式来定位和选择文档中的元素,这是一种强大且灵活的查询方式,可以快速准确地找到所需的元素。
可以通过编程的方式创建 XML 或 HTML 元素,并将它们组合成完整的文档,然后将文档保存到文件或进行其他处理。
lxml库是 Python 中一个强大的 XML 处理库,简单来说,etree 模块提供了一个简单而灵活的API来解析和操作 XML/HTML 文档。
etree.HTML(text)
:将 HTML 文本解析为一个树形结构对象,返回根元素。
etree.XML(text)
:将 XML 文本解析为树形结构,返回根元素。
text
:该参数是要解析的 HTML 文本,它可以是从网页上抓取的 HTML 代码,也可以是手动编写的 HTML 字符串。element.find(xpath)
:使用 XPath 表达式查找第一个匹配的子元素。
element.xpath(xpath)
:使用 XPath 表达式查找所有匹配的元素,返回一个元素列表。
基本语法和示例
绝对路径和相对路径
绝对路径:从根节点开始定位,以 /
开头。例如,/html/body/div
表示从根节点开 始,依次找到 html
元素、body
元素下的 div
元素。
相对路径:从当前节点开始定位,不以 /
开头。例如,div/p
表示当前节点下 的 div
元素里的 p
元素。
*
:匹配任意元素节点。例如,//*
表示文档中的所有元素节点。
@*
:匹配任意属性节点。例如,//a/@*
表示所有 a
元素的所有属性。
[@attribute='value']
:根据属性值选择节点。 例 如,//a[@href='https://example.com']
表示所有 href
属性值 为 https://example.com
的 a
元素。
[index]
:根据索引选择节点,索引从 1 开始。例如,//li[1]
表示文档中第一 个 li
元素。
text()
:选择节点的文本内容。例如,//h1/text()
表示所有 h1
元素的文本内 容。
contains()
:用于匹配包含特定文本的节点。例如,//p[contains(text(), '关 键词')]
表示所有文本内容包含 “关键词” 的 p
元素。
element.get(attribute)
:获取元素的指定属性值。
attribute
:这是一个字符串类型的参数,表示要获取的属性名。例如,在 HTML 中,常见的属性名有 href
、src
、title
、alt
等;在 XML 中,属性名可以是自定义的。etree.Element(tag, attrib={})
: 创建一个新的元素,tag
是元素的标签名,attrib
是元素的属性字典。
在处理 XML 或 HTML 文档时,有时我们需要动态创建元素并构建文档结构。etree.Element(tag, attrib={})
方法允许我们创建一个新的元素对象,该对象可以作为文档树的一部分,后续可以添加子元素、设置属性、添加文本内容等操作,最终生成完整的 XML 或 HTML 文档。
tag
:这是一个必需的字符串参数,表示要创建的元素的标签名。例如,在 HTML 中可以是 'div'
、'p'
、'a'
等;在 XML 中可以是自定义的标签名,如 'book'
、'author'
等。attrib
:这是一个可选的字典参数,用于为创建的元素设置属性。字典的键是属性名,值是属性值。默认情况下,该参数为空字典 {}
,即创建的元素没有任何属性。