【问题标题】:&nbsp text not handled by the lxml&nbsp 文本未由 lxml 处理
【发布时间】:2015-07-03 15:59:28
【问题描述】:

我的html文件有以下一行

<tr><td>$nbsp;</td><tr> 

但是当我使用 lxml 进行解析时:

from lxml import tree as ET
tree = ET.parse("file.html")

我收到以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 3310, in lxml.etree.parse (src/lxml/lxml.etree.c:72517)
File "parser.pxi", line 1791, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:105979)
File "parser.pxi", line 1817, in lxml.etree._parseDocumentFromURL (src/lxml/lxml.etree.c:106278)
File "parser.pxi", line 1721, in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:105277)
File "parser.pxi", line 1122, in lxml.etree._BaseParser._parseDocFromFile (src/lxml/lxml.etree.c:100227)
File "parser.pxi", line 580, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:94350)
File "parser.pxi", line 690, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:95786)
File "parser.pxi", line 620, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:94853)
lxml.etree.XMLSyntaxError: Entity 'nbsp' not defined, line 14, column 159

【问题讨论】:

标签: python lxml


【解决方案1】:

Use lxml.html, not lxml.etree, for HTML. &amp;nbsp; 合法地没有在 XML 中预定义,但它可用于 HTML。因此:

>>> lxml.html.fromstring('''<tr><td>&nbsp;</td><tr>''')
<Element div at 0x10a7a5e68>

...正常工作。


或者,您可以在文档中使用与&amp;nbsp; 等效的XML,即&amp;#160;,或者您可以在XML 文件中声明DOCTYPE 并在其内容中包含&lt;!ENTITY nbsp "&amp;#160;"&gt;。

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    相关资源
    最近更新 更多