XPath для выбора нескольких элементов HTML `a` - PullRequest
0 голосов
/ 02 декабря 2011

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

Я пытаюсь выделить все элементы a внутри данного td (в примере td[2]) и запустить оператор for для вывода текста, содержащегося в элементах 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 Ответ

3 голосов
/ 02 декабря 2011

XPath, который вам нужен, довольно близок:

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

Я не знаю, какую библиотеку вы используете, но я подозреваю, что это Plex Parsekit API . Если это так, 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="#">I am anchor text <span>But I am too and am not in Element.text</span> and I am in Element.tail</a>
...