python开发包(二)——requests(爬虫)与lxml

requests部分程序头

requests.request(参数)

        request是最为底层方法,比起他的其他方法更为灵活,可选参数有:

参数名 说明 示例值
  • method
  • HTTP 方法(GET/POST/PUT 等)
  • "POST""GET""PUT""DELATE"""
  • url
  • 请求的 URL
  • "https://api.example.com/data"
  • params
  • URL 查询参数
  • {"page": 2, "limit": 10}
  • data
  • 表单数据或二进制数据
  • {"username": "user", "password": "pass"}
  • json
  • JSON 格式的请求体
  • {"name": "John", "age": 30}
  • headers
  • 请求头字典
  • {"User-Agent": "Mozilla/5.0"}
  • cookies
  • Cookie 字典或 CookieJar 对象
  • {"session_id": "12345"}
  • files
  • 上传文件的字典
  • {"file": open("report.pdf", "rb")}
  • auth
  • 认证信息(Basic/Digest 等)
  • HTTPBasicAuth("user", "pass")
  • timeout
  • 超时时间(秒)
  • 5 或 (3, 10)(连接超时 3 秒,读取超时 10 秒)
  • allow_redirects
  • 是否允许重定向
  • False
  • proxies
  • 代理配置
  • {"http": "http://proxy.example.com:8080"}
  • verify
  • 是否验证 SSL 证书(可指定 CA 文件路径)
  • False 或 "/path/to/ca.pem"
  • stream
  • 是否流式获取响应内容
  • True(用于大文件下载)
  • cert
  • SSL 客户端证书
  • ("/path/to/cert.pem", "/path/to/key.pem")

requests.head(参数)

        head方法用于发送一个 HTTP HEAD 请求。HEAD 请求与 GET 请求类似,但服务器在响应 HEAD 请求时只返回响应头,不返回响应体。这在你只需要获取资源的元信息(如内容类型、内容长度、最后修改时间等)而不需要下载整个资源时非常有用。可选参数有:

参数名 说明 示例值
  • url
  • 新请求对象的 URL
  • "https://api.example.com/data"
  • **kwargs
  • request方法接受的可选参数
  • params(查询字符串参数)、headers(请求头)、cookies(Cookie 信息)、timeout(超时时间)等。
一句话总结

  requests.head() 就像是你去打听某件东西的情况,但不把东西拿回来。它只向服务器询问资源的一些基本信息,而不获取资源的具体内容。

核心功能
  • 获取元信息:通过 requests.head() 可以获取服务器上资源的元信息,例如资源的大小、类型、最后修改时间等。这些信息都包含在响应头中。
  • 节省带宽和时间:因为它不获取资源的具体内容,所以相比 requests.get() 等方法,能节省大量的带宽和时间。比如你只想知道一个大文件的大小,而不需要下载它,就可以用 requests.head()

requests.delate(参数)

  delete用于发送 HTTP DELETE 请求,通常用于从服务器删除指定资源。该方法是 requests.request() 的封装,默认方法为 "DELETE"。可选参数有:

  • url
  • 请求的目标 URL
  • "https://api.example.com/resource/123"
  • **kwargs
  • 传递给 requests.request() 的可选参数,包括:
  • params
  • URL 查询参数(字典或字节)
  • {"confirm": "true"}
  • headers
  • 请求头字典
  • {"Authorization": "Bearer token"}
  • auth
  • 认证信息(如 HTTPBasicAuth
  • HTTPBasicAuth("user", "pass")
  • timeout
  • 超时时间(秒)
  • 5 或 (3, 10)(连接超时 3 秒,读取超时 10 秒)
verify 是否验证 SSL 证书(布尔值或 CA 文件路径) False 或 "/path/to/ca.pem"
核心功能

  requests.delete() 就像是你给服务器发了一个 “删除指令”,告诉服务器把某个特定的资源从它那里移除,比如删除一篇文章、一个用户账户等。

requests.get(参数)

  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()就像是你向服务器发送一个询问信息的请求,就如同你向图书馆管理员询问某本书的信息一样,然后等待服务器把你想要的信息给你返回回来。

核心功能
  • 获取信息:你可以用它从网站上获取各种数据,比如网页的内容、图片、JSON 格式的数据等。
  • 只读操作:它主要用于读取服务器上的数据,而不会对服务器上的数据进行修改、添加或删除等操作。
  • 简单方便:使用起来很简单,只需要提供要访问的网址就可以了。      

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()就像你往一个盒子里塞纸条(数据),然后寄给服务器,告诉它:"我要提交新东西啦!"

核心功能
  • 提交数据:比如登录时的用户名密码、发微博的内容、上传的文件等。
  • 隐藏数据:数据藏在请求内部,不会像 GET 那样暴露在网址里。
  • 修改 / 创建资源:适合新增内容(如发帖)或修改部分内容(如编辑个人资料)。

request.put(参数)

  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()

requests.patch(参数)

  patch用于发送 HTTP PATCH 请求,通常用于对服务器资源进行部分更新。与 PUT 方法不同,PATCH 只需发送需要修改的数据,而 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.patch() 好比你去修改一份已经存在的文件,只对文件里需要改动的部分进行修改,而不是把整个文件都替换掉,它是用来向服务器部分更新资源的。

核心功能
  • 部分更新:当你只想修改服务器上某个资源的一部分信息时,就可以用 requests.patch()。比如你有一篇文章,只想修改其中的某一段文字,而不是重新上传整篇文章。
  • 灵活更新:它允许你只发送需要更改的数据,而不用管其他未修改的部分,能节省传输的数据量和服务器处理的时间。

lxml的部分程序头

主要功能

解析 XML/HTML 文档

etree 能够将 XML 或 HTML 文本解析为树形结构,方便后续对文档中的元素进行访问和操作。例如,使用 etree.HTML() 可以解析 HTML 文本,etree.XML() 可以解析 XML 文本。

元素和属性操作

解析后的树形结构由元素和属性组成,etree 支持对这些元素和属性进行增删改查等操作。比如可以获取元素的文本内容、修改元素的属性值等。

XPath 查询

支持使用 XPath 表达式来定位和选择文档中的元素,这是一种强大且灵活的查询方式,可以快速准确地找到所需的元素。

生成 XML/HTML 文档

可以通过编程的方式创建 XML 或 HTML 元素,并将它们组合成完整的文档,然后将文档保存到文件或进行其他处理。

etree介绍

        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 表达式查找所有匹配的元素,返回一个元素列表。

        xpath
  •  XPath(XML Path Language)是一种用于在 XML 或 HTML 文档中定位和选择节点的语言,在数据抓取、XML 处理等场景中应用广泛。下面从多个方面详细介绍 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 中,常见的属性名有 hrefsrctitlealt 等;在 XML 中,属性名可以是自定义的。
etree.Element(tag, attrib={})

        创建一个新的元素,tag 是元素的标签名,attrib 是元素的属性字典。

功能概述

        在处理 XML 或 HTML 文档时,有时我们需要动态创建元素并构建文档结构。etree.Element(tag, attrib={}) 方法允许我们创建一个新的元素对象,该对象可以作为文档树的一部分,后续可以添加子元素、设置属性、添加文本内容等操作,最终生成完整的 XML 或 HTML 文档。        

参数解释
  • tag:这是一个必需的字符串参数,表示要创建的元素的标签名。例如,在 HTML 中可以是 'div''p''a' 等;在 XML 中可以是自定义的标签名,如 'book''author' 等。
  • attrib:这是一个可选的字典参数,用于为创建的元素设置属性。字典的键是属性名,值是属性值。默认情况下,该参数为空字典 {},即创建的元素没有任何属性。

你可能感兴趣的:(python,爬虫,数据库)