Работая в 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_link
это img
, не тег - как я могу получить тег? a
a
Благодарю.
Просто измените 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.
Вы также можете выбрать родительский узел или произвольных предков, используя //a/img[@title='Go to next page']/parent::a
или //a/img[@title='Go to next page']/ancestor::a
соответственно как выражения XPath.