Python:使用lxml解析XML
我正在尝试使用一个名为。该库解析XML格式的DBLP数据。当我试图打印一位作者的所有出版物时,脚本的行为很奇怪。有时打印时没有任何错误,有时显示错误。如果我在一个错误后多次运行同一代码,它将显示发布,而不会出现任何问题。 我使用的代码是:Python:使用lxml解析XML,python,xml,parsing,xml-parsing,lxml,Python,Xml,Parsing,Xml Parsing,Lxml,我正在尝试使用一个名为。该库解析XML格式的DBLP数据。当我试图打印一位作者的所有出版物时,脚本的行为很奇怪。有时打印时没有任何错误,有时显示错误。如果我在一个错误后多次运行同一代码,它将显示发布,而不会出现任何问题。 我使用的代码是: a = dblp.search('Michael L. Littman') for i in range(len(a[0].publications)): print i print a[0].publications[i].title 执行
a = dblp.search('Michael L. Littman')
for i in range(len(a[0].publications)):
print i
print a[0].publications[i].title
执行上述代码时出现的错误是:
> Traceback (mostrecent call last): File "<pyshell#217>", line 3, in <module>
> print a[0].publications[i].title File "build\bdist.win32\egg\dblp\__init__.py", line 19, in __getattr__
> self.load_data() File "build\bdist.win32\egg\dblp\__init__.py", line 110, in load_data
> root = etree.fromstring(xml) File "lxml.etree.pyx", line 3092, in lxml.etree.fromstring (src\lxml\lxml.etree.c:70691) File
> "parser.pxi", line 1828, in lxml.etree._parseMemoryDocument
> (src\lxml\lxml.etree.c:106689) File "parser.pxi", line 1716, in
> lxml.etree._parseDoc (src\lxml\lxml.etree.c:105478) File
> "parser.pxi", line 1086, in lxml.etree._BaseParser._parseDoc
> (src\lxml\lxml.etree.c:100105) File "parser.pxi", line 580, in
> lxml.etree._ParserContext._handleParseResultDoc
> (src\lxml\lxml.etree.c:94543) File "parser.pxi", line 690, in
> lxml.etree._handleParseResult (src\lxml\lxml.etree.c:96003) File
> "parser.pxi", line 620, in lxml.etree._raiseParseError
> (src\lxml\lxml.etree.c:95050) XMLSyntaxError: Space required after the
> Public Identifier, line 2, column 47
可以看到库的代码。
我向作者提出了这个问题,但没有回应。我希望这里的任何人都能帮助我,至少知道可能的错误是什么。
谢谢听起来像是与记忆有关的问题。当它成功返回时,您可能拥有更多内存,而当它失败时,您可能拥有更少内存。您正在搜索的文件大小是多少?另一方面,您应该为此使用xpath吗?dblp数据集非常大,大于1GB。但是,从代码中可以看出,它查询dblp网站,而不是加载整个xml文档,因为dblp只加载回答查询的xml。对于xpath,我认为这段代码可以节省我的时间。我现在也有同样的问题。如果能在这里找到答案,那太好了!:复制