我有以下的html:LXML/Python的:把以前的同胞
<div id = "big">
<span>header 1</span>
<ul id = "outer">
<li id = "inner">aaa</li>
<li id = "inner">bbb</li>
</ul>
<span>header 2</span>
<ul id = "outer">
<li id = "inner">ccc</li>
<li id = "inner">ddd</li>
</ul>
</div>
我希望它環路其順序爲:
header 1
aaa
bbb
header 2
ccc
ddd
我曾試圖通過每個UL,然後循環打印標題和li值。但是,我不知道如何獲得與ul關聯的span標頭。
sets = tree.xpath("//div[@id='big']//ul[@id='outer']")
for set in sets:
# Print header. Not sure how to get it
header = set.xpath(".//li/preceding-sibling::span")
print header
# Print texts. This works.
values = set.xpath(".//li//text()")
for v in values:
print v
只循環所有文本節點將無法正常工作,因爲我需要知道它是否是標題或li值。
不直接影響問題,但這是錯誤的HTML,因爲ID應該是唯一的。你可以用'class =「outer」'代替。 – 2015-01-12 11:53:53