lxml:获取具有特定子元素的元素?

时间:2011-07-31 20:48:51

标签: python lxml

在lxml中工作时,我希望获得href所有img子项的title="Go to next page"属性。

所以在下面的代码片段中:

<a class="noborder" href="StdResults.aspx">
<img src="arrowr.gif" title="Go to next page"></img>
</a>

我想让StdResults.aspx回来。

我到目前为止:

next_link = doc.xpath("//a/img[@title='Go to next page']") 
print next_link[0].attrib['href']

next_linkimg,而不是a代码 - 我如何获得a代码?

感谢。

2 个答案:

答案 0 :(得分:2)

只需将a/img...更改为a[img...] :(括号类似于“这样”)

import lxml.html as lh

content='''<a class="noborder" href="StdResults.aspx">
<img src="arrowr.gif" title="Go to next page"></img>
</a>'''

doc=lh.fromstring(content)
for elt in doc.xpath("//a[img[@title='Go to next page']]"):
    print(elt.attrib['href'])

# StdResults.aspx

或者,你可以走得更远并使用

"//a[img[@title='Go to next page']]/@href"

检索href属性的值。

答案 1 :(得分:0)

您还可以分别使用//a/img[@title='Go to next page']/parent::a//a/img[@title='Go to next page']/ancestor::a作为XPath表达式来选择父节点或任意祖先。