简介
lxml
是一个 C 语言写的 xml/html 解析库,速度快,容错能力强。
使用 lxml 解析 HTML
from lxml import etree, html
import requests
rsp = requests.get("https://www.baidu.com/")
html_doc = html.fromstring(rsp.content) # 解析 html 文档,得到一个 <lxml.html.HtmlElement> 类型的对象
# 获取元素
els = html_doc.xpath(xpath) # 通过 xpath 语法获取元素。结果是一个列表
els = html_doc.cssselect(cssselect) # 通过 css 选择器语法获取元素。结果是一个列表
# 删除元素
el.drop_tree() # 获取到元素后,可以使用该方法将其删除
# 添加元素
parent_el.append(el) # 在父元素的最后插入一个元素,el 必须是 <lxml.html.HtmlElement> 类型
parent_el.insert(index, el) # 在父元素的指定位置插入元素
# 转换为 string
etree.tostring(html_doc) # 注意:结果是 bytes 类型
:::info
尽可能使用 xpath
,lxml
+ xpath
非常强大。
:::
:::warning
有时候 lxml
会将 DOCTYPE
给删掉,暂不知道为什么。
:::