LXML:有可能在一个元素中进行搜索吗



我习惯于Beautifulsoup,在那里我会提取元素,然后在其中搜索。但LXML并没有看到这种行为,看起来它是从主文档中搜索的。

从下面的例子中,我得到的输出是:

案例:1

  • 标准:1
  • 标准:2
  • 标准:3
  • 标准:4

案例:2

  • 标准:1
  • 标准:2
  • 标准:3
  • 标准:4

但我所期望的是:

案例:1

  • 标准:1
  • 标准:2

案例:2

  • 标准:3
  • 标准:4

示例代码:

from lxml.html import fromstring, tostring
html = """
<p>Test document</p>
<case id='1'>
<criteria id='1'><p>Some text</p></criteria>
<criteria id='2'><p>Some more text</p></criteria>
</case>
<case id='2'>
<criteria id='3'><p>It just keeps going</p></criteria>
<criteria id='4'><p>Will it never end?</p></criteria>
</case>
"""
doc = fromstring(html)
case_list = doc.xpath('//case')
for case in case_list:
print('Case: ', case.get('id'))
criteria_list = case.xpath('//criteria')
for criteria in criteria_list:
print(' - Criteria: ', criteria.get('id'))

问题可能在这一行:

criteria_list = case.xpath('//criteria')

尝试将XPath表达式从"//criteria"(从根目录搜索文档(替换为"/条件'(从当前元素搜索(:

criteria_list = case.xpath('./criteria')

最新更新