Дерево L xml возвращает выражения xpath в виде строки, если они приведены в следующем примере - PullRequest
0 голосов
/ 06 февраля 2020
import lxml.etree as LX

url= "https://www.w3.org/2003/05/soap-envelope/"

response = requests.get(url)
xml_string = LX.fromstring(response.content)
path='"//*[1.1.1]"'
result = xml_string.xpath(path)
print(result)

Результат приведенного выше кода возвращает xpath как саму строку и не приводит к ошибке для неверного xpath

1 Ответ

1 голос
/ 06 февраля 2020

'"//*[1.1.1]"' не является XPath (*) . Это строка Обратите внимание на расстановку кавычек.

Выражение XPath, которое не содержит ничего, кроме строки, вернет эту строку, что неудивительно.

import lxml.etree as LX
import requests

url = "https://www.w3.org/2003/05/soap-envelope/"
response = requests.get(url)

tree = LX.fromstring(response.content)
path = '"Look at me I\'m a string!"'
result = tree.xpath(path)
print(result)

print

Look at me I'm a string!

(*) Неплохая техническая точка. Конечно, это выражение XPath. Если бы это было не так, вы бы получили ошибку от l xml. Это просто не тот, который выбирает какие-либо элементы.

...