使用Python lxml库正确解析任意嵌套HTML标签中的所有文本的xpath语法

0 投票
1 回答
679 浏览
提问于 2025-04-16 18:36

我在Python中使用lxml库创建了这个xpath语法

htmlPage.xpath("/html/body//a/text()")

这个语法可以让我获取到我想要的特定HTML范围内的所有 <a> 标签。现在我遇到一个问题,就是这些 <a> 标签可能会长成这样:

<a>This is a sentence with some <italic>italic text</italic>-formatting I want to parse.</a>

使用xpath后,我得到的列表比我预期的多了一个元素。我检查了一下,发现它把上面提到的 <a> 标签拆分成了两个列表元素,而不是一个。原本我应该得到的字符串是

"This is a sentence with some italic text-formatting I want to parse."

但我得到的是两个字符串

"This is a sentence with some" # and
"-formatting I want to parse."

有没有办法解决这个问题呢?

1 个回答

2

我解决问题的方法是先获取所有的 <a> 标签。

results = htmlPage.xpath("/html/body//a")

然后我遍历这个返回的列表,并对列表中的每个元素使用 text_content() 方法。

for a_tag in results:
    print a_tag.text_content() # prints bthe whol string: "This is a sentence with some italic text-formatting I want to parse."

撰写回答