I tried this but it doesn't work.
t = item.findtext('.//span[@class="python"]//a[2]')
This is a FAQ about the //
abbreviation.
.//a[2]
means: Select all a
descendents of the current node that are the second a
child of their parent. So this may select more than one element or no element -- depending on the concrete XML document.
To put it more simply, the []
operator has higher precedence than //
.
If you want just one (the second) of all nodes returned you have to use brackets to force your wanted precedence:
(.//a)[2]
This really selects the second a
descendent of the current node.
For the actual expression used in the question, change it to:
(.//span[@class="python"]//a)[2]
or change it to:
(.//span[@class="python"]//a)[2]/text()
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…