2012-02-28 3 views
2

Я пытаюсь выполнить запрос с помощью XPath html документа, обработанного lxml. Документ представляет собой прямое html-загрузку страницы о Plastic in Wikipedia. Тогда я разобрать его с заменой LXML отключения объекта, чтобы избежать ошибок с «& рег»XPath с lxml failing

from lxml import etree 
root = etree.parse("plastic.html",etree.XMLParser(resolve_entities=False)) 

Затем я получить в пространстве имен URL-адрес

htmltag = root.iter().next() 
nsurl = htmltag.nsmap.values()[0] 

Теперь я хотел бы использовать XPath запросы на любом «root» или «htmltag», но я не могу этого сделать. Я пробовал разные способы, но мне кажется, что самая правильная форма, которая в любом случае дает ошибки.

root.xpath('//ns:body',namespace={'ns',nsurl}) 

И это то, что я получаю

XPathResultError: Unknown return type: dict 

Я бегу команды в консоли IPython, но я не думаю, что проблема может быть. Что я делаю не так?

+0

Это 'root.xpath ('// ns: body', namespaces = {'ns': nsurl}) ' – RanRag

+0

также смотрите здесь http://stackoverflow.com/questions/4210730/how- делать-и-использование в XML-пространства имен-с-найти-FindAll-в-LXML – RanRag

ответ

11

Это проклятое проклятие. Вы должны использовать namespaces вместо namespace.

Смежные вопросы