简介

lxml 是一个 C 语言写的 xml/html 解析库,速度快,容错能力强。

使用 lxml 解析 HTML

  1. from lxml import etree, html
  2. import requests
  3. rsp = requests.get("https://www.baidu.com/")
  4. html_doc = html.fromstring(rsp.content) # 解析 html 文档,得到一个 <lxml.html.HtmlElement> 类型的对象
  5. # 获取元素
  6. els = html_doc.xpath(xpath) # 通过 xpath 语法获取元素。结果是一个列表
  7. els = html_doc.cssselect(cssselect) # 通过 css 选择器语法获取元素。结果是一个列表
  8. # 删除元素
  9. el.drop_tree() # 获取到元素后,可以使用该方法将其删除
  10. # 添加元素
  11. parent_el.append(el) # 在父元素的最后插入一个元素,el 必须是 <lxml.html.HtmlElement> 类型
  12. parent_el.insert(index, el) # 在父元素的指定位置插入元素
  13. # 转换为 string
  14. etree.tostring(html_doc) # 注意:结果是 bytes 类型

:::info 尽可能使用 xpathlxml + xpath 非常强大。 :::

:::warning 有时候 lxml 会将 DOCTYPE 给删掉,暂不知道为什么。 :::