我習慣了 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
提交
取消