使用Python lxml库正确解析任意嵌套HTML标签中的所有文本的xpath语法
我在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."