lxml:URL中的一些XML给出了这个lxml.etree.XMLSyntaxE

2024-09-30 00:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它将从url列表中提取XML文件中的一些术语。 所有的URL都允许访问XML数据。在

它在最初正确打开、解析和提取时工作正常,但随后在该过程中被一些XML文件中断,并出现以下错误:

File "<stdin>", line 18, in <module>
  File "lxml.etree.pyx", line 2953, in lxml.etree.parse (src/lxml/lxml.etree.c:56204)
  File "parser.pxi", line 1555, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:82511)
  File "parser.pxi", line 1585, in lxml.etree._parseFilelikeDocument (src/lxml/lxml.etree.c:82832)
  File "parser.pxi", line 1468, in lxml.etree._parseDocFromFilelike (src/lxml/lxml.etree.c:81688)
  File "parser.pxi", line 1024, in lxml.etree._BaseParser._parseDocFromFilelike (src/lxml/lxml.etree.c:78735)
  File "parser.pxi", line 569, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:74472)
  File "parser.pxi", line 650, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:75363)
  File "parser.pxi", line 590, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:74696)
lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1

根据我的搜索,这可能是因为一些XML文件有空格,但我不确定是否是问题所在。我分不清哪个文件出错了。 有没有办法绕过这个错误?在

这是我的剧本:

^{pr2}$

我试过:

tree = etree.iterparse(textfile, events = ("start","end"));
OR
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse(textfile, parser)

没有成功。 任何帮助都将不胜感激


Tags: 文件insrctreeparserparse错误line
1条回答
网友
1楼 · 发布于 2024-09-30 00:27:24

I can't tell which files give the error

通过在解析之前打印文件/URL的名称进行调试。然后您将看到导致错误的文件。在

另外,请阅读错误消息:

lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1

这表明下载的XML文件是空的。一旦确定了导致问题的URL,请尝试下载该文件并检查其内容。我怀疑可能是空的。在

在分析时,可以通过使用try/except块忽略有问题的文件(空的或语法上无效的文件):

^{pr2}$

或者,您可以通过检查“Content length”头来检查空文件,甚至可以通过读取urlopen()返回的资源来检查,但我认为上面的方法更好,因为它还可以捕获其他潜在的错误。在

相关问题 更多 >

    热门问题