【发布时间】:2018-10-01 08:04:27
【问题描述】:
我想用 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 没有为Elements 定义。由于 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 只提供内部文本(“完整”就这么多)。这可以实现从text 中减去full_text 的肮脏技巧,尽管我不确定如果有任何链接它会起作用。
print(data.full_text)
# important data
【问题讨论】:
标签: python python-requests lxml python-requests-html