XPath для выбора нескольких элементов HTML 'a'

Я новичок в XPath и не мог понять это, глядя на другие решения.

То, что я пытаюсь сделать, это выбрать все элементы внутри заданного a td (td[2] в примере) и работает для постановки на выходе текст, содержащийся внутри a элементы.

Исходный код:

multiple = HTML.ElementFromURL(url).xpath('//table[contains(@class, "mg-b20")]/tr[3]/td[2]/*[self::a]')

for item in multiple:
 Log("text = %s" %item.text)

Любой указатель на то, как я могу сделать эту работу?

Благодарю!

1 ответ

XPath вам нужно довольно близко:

//table[contains(@class, "mg-b20")]/tr[3]/td[2]//a

Я не знаю, какую библиотеку вы используете, но я подозреваю, что это API Plex Parsekit. Если это так, parsekit использует lxml.etree качестве базовой библиотеки, поэтому вы можете еще больше упростить свой код:

element = HTML.ElementFromURL(url)
alltext = element.xpath('string(//table[contains(@class, "mg-b20")]/tr[3]/td[2]//a)')

for item in alltext:
 Log("text = %s" % item);

Это даже позаботится о таких случаях, как смешанный контент, например:

<a href="#" target="_blank">I am anchor text <span>But I am too and am not in Element.text</span> and I am in Element.tail</a>

licensed under cc by-sa 3.0 with attribution.