提问人:Minions 提问时间:8/3/2023 最后编辑:Daniel HaleyMinions 更新时间:8/3/2023 访问量:33
当有另一个带有文本的标签时,LXML 库不会提取给定 HTML 标签中的文本
lxml library doesn't extract text in a given html tag when there is another tag with the text
问:
我有以下html脚本:
<div>
<p class="test1">
<i class="empty"> </i>
WANTED TEXT
</p>
</div>
我想提取标签(WANTED TEXT)的上下文。我的代码:p
from lxml import etree
from io import StringIO
html_parser = etree.HTMLParser()
tmp_xp = "//p[1]"
selected_tag = etree.parse(StringIO("""<div> <p class="test1"> <i class="empty"> </i> WANTED TEXT </p> </div>"""), html_parser).xpath(tmp_xp)
print(selected_tag[0].text)
代码不打印任何内容。如果我移动到标签之前,代码开始正常工作。WANTED TEXT
<i>
我该如何解决这个问题?
答:
1赞
Andrej Kesely
8/3/2023
#1
用途:selected_tag[0]
.itertext()
print("".join(selected_tag[0].itertext()).strip())
指纹:
WANTED TEXT
1赞
Daniel Haley
8/3/2023
#2
不起作用的原因是文本(以及周围的空格)实际上是元素的。.text
WANTED TEXT
.tail
i
除了另一个答案中显示的 、 和 之外,您还可以使用普通 XPath ()。.join()
.itertext()
.strip()
normalize-space()
只需更改:
print(selected_tag[0].text)
自:
print(selected_tag[0].xpath("normalize-space()"))
评论