Как парсить теги с префиксами (e.g. prefix:div) с поомощью lxml?

Учусь использовать lxml, первый раз наткнулся на теги с префиксами. Сразу получил эксепшн, о том что префикс не определен.
На stackoverflow в похоожем попросе написали, что нужно указать namespaces в xpath.
Указал, ошибка прпала, но xpath возвращает пустой лист.
from lxml import html

url = 'http://xml.weather.yahoo.com/forecastrss/RSXX0091_c.xml'

p = html.parse(url)
div = p.xpath('//xhtml:div', namespaces={'xhtml': url})
print(div)
# []

Что не так я делаю?
Копался в доках, пробовал
e = html.etree.XPathEvaluator(p)
e.register_namespace('xhtml', url)
div = e('//xhtml:div')

Не помогло, тоже получаю пустой лист.
  • Вопрос задан
  • 482 просмотра
Решения вопроса 2
sim3x
@sim3x
Что не так я делаю?
работаешь с xml как с html

from lxml import etree
tree = etree.parse('http://xml.weather.yahoo.com/forecastrss/RSXX0091_c.xml')
print tree.xpath('//description/text()')[0]
// Yahoo! Weather for Saint Petersburg, RS


example
stackoverflow.com/a/19813269/1346222
Ответ написан
nightvich
@nightvich
ITman
Исходя из ваших запросов само, собой выводится пустота.
Чтобы понять принцип работы xpath не требуется ничего кроме браузера.
F12 -> Console
В консоле вам требуется использовать команду $x('xpath')
eae3a35d10cc423cb83b6c6cf42b07e8.png
Все принципы работы с xpath смотреть тут
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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