Подтвердить что ты не робот

Как использовать регулярное выражение в lxml xpath?

Я использую такую ​​конструкцию:

doc = parse(url).getroot()
links = doc.xpath("//a[text()='some text']")

Но мне нужно выбрать все ссылки, у которых есть текст, начинающийся с "некоторого текста", поэтому мне интересно, есть ли способ использовать regexp здесь? Не нашел ничего в документации lxml

4b9b3361

Ответ 1

Вы можете сделать это (хотя для примера вам не нужны регулярные выражения). Lxml поддерживает регулярные выражения из функций расширения EXSLT. (см. документы lxml для класс XPath, но он также работает для метода xpath())

doc.xpath("//a[re:match(text(), 'some text')]", 
        namespaces={"re": "http://exslt.org/regular-expressions"})

Обратите внимание, что вам нужно предоставить сопоставление пространства имен, чтобы он знал, что означает префикс "re" в выражении xpath.

Ответ 2

Вы можете использовать функцию start-with():

doc.xpath("//a[starts-with(text(),'some text')]")