我想用 requests-html 0.9.0 解析这样的 HTML 文档:
from requests_html import HTML
html = HTML(html='<span><span class="data">important data</span> and some rubbish</span>')
data = html.find('.data', first=True)
print(data.html)
# <span class="data">important data</span> and some rubbish
print(data.text)
# important data and some rubbish
我需要区分标签内的文本(由它包围)和标签的尾部(从元素到下一个标签的文本)。这是我最初预期的行为:
data.text == 'important data'
data.tail == ' and some rubbish'
但是tail
没有为Element
s 定义。由于 requests-html 提供对内部lxml
对象的访问,我们可以尝试从以下位置获取它lxml.etree.Element.tail
:
from lxml.etree import tostring
print(tostring(data.lxml))
# b'<html><span class="data">important data</span></html>'
print(data.lxml.tail is None)
# True
lxml 表示中没有尾巴!带有内部文本的标签是可以的,但尾巴似乎被剥离了。如何提取'and some rubbish'
?
编辑:我发现full_text
它只提供内部文本(“完整”就这么多)。full_text
这可以实现从中减去的肮脏技巧text
,尽管我不肯定如果有任何链接它会起作用。
print(data.full_text)
# important data