xpath:返回由前面的值找到的元素内的值

时间:2015-05-15 13:59:57

标签: python xpath

为奇怪的标题道歉(很难解释)。这是我的HTML:

<p>
  <strong>Date:</strong> May 12, 2015
</p>

基本上,我想提取日期(May 12, 2015)。我想出来了:

print advisory.xpath('//p/strong[text()="Date:"]')[0].text

但这自然会返回Date:。任何想法如何遍历父母,跳过w / e是强标记并返回其余部分?

2 个答案:

答案 0 :(得分:4)

或者,由于日期文本实际上是<strong>元素的后续文本,因此您可以使用tail这样的属性:

   [2]: s = '''<root><p><strong>Date:</strong> May 12, 2015</p></root>'''

In [3]: from lxml import etree as ET

In [4]: tree = ET.fromstring(s)

In [5]: tree.xpath('//p/strong[text()="Date:"]')[0].tail
Out[5]: ' May 12, 2015'

答案 1 :(得分:1)

只是让条件更大

print advisory.xpath('//p[strong/text()="Date:"]/text()')[0]