我有一个脚本,它将从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)
没有成功。 任何帮助都将不胜感激
通过在解析之前打印文件/URL的名称进行调试。然后您将看到导致错误的文件。在
另外,请阅读错误消息:
这表明下载的XML文件是空的。一旦确定了导致问题的URL,请尝试下载该文件并检查其内容。我怀疑可能是空的。在
在分析时,可以通过使用try/except块忽略有问题的文件(空的或语法上无效的文件):
^{pr2}$或者,您可以通过检查“Content length”头来检查空文件,甚至可以通过读取
urlopen()
返回的资源来检查,但我认为上面的方法更好,因为它还可以捕获其他潜在的错误。在相关问题 更多 >
编程相关推荐