Skip to content

解析器的使用

发请求只是第一步。
真正有价值的是:把拿到的 HTML 或 JSON 解析成你想要的数据。

HTML 文档解析

当响应内容是 HTML 时,你通常要做两件事:

  • 定位节点
  • 提取文本或属性

lxml

lxml 是非常常用的 HTML 解析库。

安装:

bash
pip install lxml

最基础示例:

python
from lxml import etree

html = """
<html>
  <body>
    <h1>Python 学习</h1>
    <a href="https://example.com">进入</a>
  </body>
</html>
"""

tree = etree.HTML(html)
title = tree.xpath("//h1/text()")
link = tree.xpath("//a/@href")

print(title)
print(link)

输出:

text
['Python 学习']
['https://example.com']

节点操作

你经常会做:

  • 找标题节点
  • 找列表节点
  • 找表格节点

属性操作

有些数据不在节点文本里,而是在属性中,例如:

  • 链接地址 href
  • 图片地址 src

JSON 文档解析

如果响应返回的是 JSON,就不需要 lxml,而是直接解析 JSON。

python
import json

text = '{"name": "小明", "age": 18}'
data = json.loads(text)
print(data["name"])

jsonpath

当 JSON 层级很深时,jsonpath 会更方便。

它的作用,和 XPath 对 HTML 的价值有点像。

学解析器时最重要的目标

  • 能从 HTML 中提取文字和链接
  • 能从 JSON 中取值
  • 知道什么时候用 XPath,什么时候直接解析 JSON

Built with VitePress.