2016-01-26 3 views
1

Возможно ли добавить пространство имен для тега при использовании html5parser из пакета lxml.html?Как удалить значение пространства имен изнутри тега элемента lxml.html.html5paser

Пример:

from lxml import html 
print(html.parse('http://example.com').getroot().tag) 
# You will get 'html' 

from lxml.html import html5parser 
print(html5parser.parse('http://example.com').getroot().tag) 
# You will get '{http://www.w3.org/1999/xhtml}html' 

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

ответ

1

Существует определенный namespaceHTMLElements логический флаг, который управляет этим поведением:

from lxml.html import html5parser 
from html5lib import HTMLParser 

root = html5parser.parse('http://example.com', 
         parser=HTMLParser(namespaceHTMLElements=False))  
print(root.tag) # prints "html" 
+0

Это помогло, спасибо alecxe! – Renat

+0

В принципе это должно работать для API lxml тоже AIUI, но см. [Этот вопрос] (http://stackoverflow.com/questions/32731479/lxml-html5parser-ignores-namespacehtmlelements-false-option) об этом. – gsnedders