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'))


函数式编程
浏览 88回答 1
1回答

当年话下

问题可能出在这一行:criteria_list&nbsp;=&nbsp;case.xpath('//criteria')尝试将 XPath 表达式从 '//criteria' (从根搜索文档)替换为 './criteria' (从当前元素搜索):criteria_list&nbsp;=&nbsp;case.xpath('./criteria')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python