我习惯了 Beautifulsoup,我会提取元素,然后在其中进行搜索。但 LXML 并没有看到这样的行为,看起来它是从主文档中搜索的。从以下示例中,我得到的输出是:情况1标准:1标准:2标准:3标准:4案例:2标准:1标准:2标准:3标准:4但我期望的是:情况1标准:1标准:2案例:2标准:3标准:4示例代码:from lxml.html import fromstring, tostringhtml = """<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'))
1 回答
当年话下
TA贡献1890条经验 获得超9个赞
问题可能出在这一行:
criteria_list = case.xpath('//criteria')
尝试将 XPath 表达式从 '//criteria' (从根搜索文档)替换为 './criteria' (从当前元素搜索):
criteria_list = case.xpath('./criteria')
添加回答
举报
0/150
提交
取消