Ответ 1
Вы очень близки. Используйте text()=
, а не @text
(который указывает атрибут).
e = root.xpath('.//a[text()="TEXT A"]')
Или, если вы знаете только, что текст содержит "ТЕКСТ А",
e = root.xpath('.//a[contains(text(),"TEXT A")]')
Или, если вы знаете только, что текст начинается с "ТЕКСТ А",
e = root.xpath('.//a[starts-with(text(),"TEXT A")]')
Подробнее о доступных строковых функциях см. .
Например,
import lxml.html as LH
text = '''\
<html>
<body>
<a href="/1234.html">TEXT A</a>
<a href="/3243.html">TEXT B</a>
<a href="/7445.html">TEXT C</a>
<body>
</html>'''
root = LH.fromstring(text)
e = root.xpath('.//a[text()="TEXT A"]')
print(e)
дает
[<Element a at 0xb746d2cc>]