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

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

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

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

23
задан Arty 3 May 2010 в 03:19
поделиться

2 ответа

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

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

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

38
ответ дан 29 November 2019 в 01:27
поделиться

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

doc.xpath("//a[starts-with(text(),'some text')]")
15
ответ дан 29 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: