使用 lxml 获取值
Get value using lxml
我有以下 html:
<div class="txt-block">
<h4 class="inline">Aspect Ratio:</h4> 2.35 : 1
</div>
我想从内容中获取值“2.35 : 1”。但是,当我尝试使用 lxml 时,它 returns 是一个空字符串(我能够获得 'Aspect Ratio' 值,可能是因为它正好位于标签之间。)
item.find('div').text
我如何获得“2.35 : 1”值?使用 etree.tostring
确实可以得到完整的输出。
这叫做元素的.tail
:
from lxml.html import fromstring
data = """
<div class="txt-block">
<h4 class="inline">Aspect Ratio:</h4> 2.35 : 1
</div>
"""
root = fromstring(data)
print root.xpath('//h4[@class="inline"]')[0].tail
打印 2.35 : 1
.
作为替代方案,您可以获得 h4
元素的 下列文本同级 :
root.xpath('//h4[@class="inline"]/following-sibling::text()')[0]
此外,请确保您使用的是 lxml.html
,因为您正在处理 HTML 数据。
您也可以使用 .text_content()
,而不是 .text
,这将为您提供元素 (http://lxml.de/lxmlhtml.html) --
的全部文本内容
>>> item.find('div').text.text_content()
Aspect Ratio: 2.35 : 1
完整的声明将是:
>>> title_detail.text_content().split('Aspect Ratio: ')[1].strip()
2.35 : 1
我有以下 html:
<div class="txt-block">
<h4 class="inline">Aspect Ratio:</h4> 2.35 : 1
</div>
我想从内容中获取值“2.35 : 1”。但是,当我尝试使用 lxml 时,它 returns 是一个空字符串(我能够获得 'Aspect Ratio' 值,可能是因为它正好位于标签之间。)
item.find('div').text
我如何获得“2.35 : 1”值?使用 etree.tostring
确实可以得到完整的输出。
这叫做元素的.tail
:
from lxml.html import fromstring
data = """
<div class="txt-block">
<h4 class="inline">Aspect Ratio:</h4> 2.35 : 1
</div>
"""
root = fromstring(data)
print root.xpath('//h4[@class="inline"]')[0].tail
打印 2.35 : 1
.
作为替代方案,您可以获得 h4
元素的 下列文本同级 :
root.xpath('//h4[@class="inline"]/following-sibling::text()')[0]
此外,请确保您使用的是 lxml.html
,因为您正在处理 HTML 数据。
您也可以使用 .text_content()
,而不是 .text
,这将为您提供元素 (http://lxml.de/lxmlhtml.html) --
>>> item.find('div').text.text_content()
Aspect Ratio: 2.35 : 1
完整的声明将是:
>>> title_detail.text_content().split('Aspect Ratio: ')[1].strip()
2.35 : 1