问题标签 [iterparse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2682 浏览

python - 使用“pythons etree.iterparse()”解析巨大的 xml 文件无法正常工作。代码中是否存在逻辑错误?

我想解析一个巨大的文件 xml-file。这个巨大文件中的记录确实看起来像这样。一般来说,文件看起来像这样

我写了一些代码,可以让我从这个文件中选择录音。

如果我让代码运行(包括存储在 MySQL 数据库中需要将近 50 分钟),我会注意到有一条记录,其中有近百万作者。这一定是错的。我什至通过查看文件来检查它,确保文件中没有错误。这篇论文只有 5 或 6 位作者,所以 dblp.xml 一切正常。所以我假设我的代码中有一个逻辑错误。但我不知道这可能在哪里。也许有人可以告诉我,错误在哪里?

代码在行中停止if len(auth) > 2000

编辑:

当我写这个函数时,我完全被误导了。我忽略了一个巨大的错误,即在尝试跳过一些不需要的录音时,会弄乱一些想要的录音。在文件中的某个点,我连续跳过了近一百万条记录,下面的通缉记录被炸毁了。

在 John 和 Paul 的帮助下,我设法重写了我的代码。它现在正在解析,并且接缝做得很好。如果某些意外错误仍未解决,我会报告。否则谢谢大家的帮助!我真的很感激!

0 投票
2 回答
651 浏览

python - lxml.etree.iterparse 关闭输入文件处理程序?

filterous用于单元测试iterparse中解析简单的XMLStringIO对象。但是,当之后尝试访问该对象时,Python 会以“ ”消息退出。根据文档,“从 lxml 2.3 开始,在错误情况下也将调用 .close() 方法”,但我没有收到错误消息或来自. 我的 IO-foo 显然跟不上速度,所以有人有建议吗?StringIOValueError: I/O operation on closed fileiterparseExceptioniterparse

命令和(希望)相关代码:

设置.py:

测试/测试.py:

过滤/过滤.py:

追溯:

PS:测试在2010-07-27运行良好。

0 投票
2 回答
3517 浏览

python - python中的lxml iterparse无法处理命名空间

工作正常,直到我将命名空间添加到根节点。关于我可以做些什么作为解决方法或正确的方法的任何想法?由于文件非常大,我需要事件驱动。

0 投票
1 回答
4219 浏览

python - 使用 Python lxml 和 Iterparse 解析大型 XML 文件

我正在尝试使用 lxml 和 iterparse 方法编写一个解析器来单步执行一个包含许多项目的非常大的 xml 文件。

我的文件格式为:

到目前为止,我的解决方案是:

当我运行它时,我得到类似于:

空白集是因为它还提取了 url 标签的子项标签,并且它们显然没有要使用 xpath 提取的描述字段。我的希望是逐个解析出每个项目,然后根据需要处理子字段。我只是在学习 lxml 库,所以我很好奇是否有办法拉出主要项目,同时在遇到任何子项目时不理会?

0 投票
2 回答
3245 浏览

python - 如何以有效的方式使用 lxml 解析这个带有嵌套元素的巨大 XML 文件?

我尝试使用XML minidom解析这个巨大的 XML 文档。虽然它在示例文件上运行良好,但在尝试处理真实文件(大约 400 MB)时会阻塞系统。

我尝试从我的 xml 文件的codereview中调整代码(它以流方式处理数据,而不是一次在内存中加载),由于元素的嵌套性质,我无法隔离数据集。我之前处理过简单的 XML 文件,但没有处理过像这样的内存密集型任务。

这是正确的方法吗?如何将库存和出版商 ID 关联到每本书?这就是我计划最终关联这两个表的方式。

非常感谢任何反馈。

书本.xml

蟒蛇代码:

蟒蛇输出:

所需的输出(最终存储在 MySQL 中 - 现在是 Python 中的列表):

0 投票
5 回答
3088 浏览

python - 迭代解析 HTML(使用 lxml?)

我目前正在尝试迭代解析一个非常大的 HTML 文档(我知道.. yuck)以减少使用的内存量。我遇到的问题是我收到了 XML 语法错误,例如:

lxml.etree.XMLSyntaxError: Attribute name redefined, line 134, column 59

这会导致一切停止。

有没有一种方法可以迭代解析 HTML 而不会因语法错误而窒息?

目前我正在从 XML 语法错误异常中提取行号,从文档中删除该行,然后重新启动该过程。似乎是一个非常恶心的解决方案。有没有更好的办法?

编辑:

这就是我目前正在做的事情:

0 投票
5 回答
8764 浏览

python - 忽略 Python (iterparse) 中的编码错误?

我已经为此奋斗了一个小时。我正在解析一个 XML 字符串iterparse。但是,数据没有正确编码,我不是它的提供者,所以我无法修复编码。

这是我得到的错误:

我怎样才能简单地忽略此错误并继续解析?我不介意,如果一个字符没有正确保存,我只需要数据。

这是我尝试过的,全部来自互联网:

编辑:
我无法显示 url,因为它是私有 API 并且涉及我的 API 密钥,但这是我获取数据的方式:

导致问题的字符是: å,我猜ä&ö等也会破坏它。

这是我尝试解析它的部分:

编辑 2:当我尝试在 PHP 中解析它时,就会发生
这种情况。澄清一下,F***ing Åmål 是一部戏剧电影=D

该文件以<?xml version="1.0" encoding="UTF-8" ?>

这是我从中得到的print repr(data[offset-10:offset+60])

0 投票
3 回答
25771 浏览

python - 使用 lxml 和 iterparse() 解析大 (+- 1Gb) XML 文件

我必须解析具有如下结构的 1Gb XML 文件,并提取标签“作者”和“内容”中的文本:

到目前为止,我已经尝试了两件事:i) 读取整个文件并使用 .find(xmltag) 遍历它;ii) 使用 lxml 和 iterparse() 解析 xml 文件。第一个选项我已经让它工作了,但它很慢。第二个选项我还没有成功。

这是我所拥有的一部分:

结果只是空格,其中没有文本。

我一定是做错了什么,但我无法理解。另外,如果还不够明显,我对 python 还是很陌生,这是我第一次使用 lxml。请帮忙!

0 投票
0 回答
348 浏览

python - 在 python 中使用 lxml 的 iterparse 有条件地针对多个 DTD 进行验证

我正在根据 docinfo 有条件地针对多个 DTD 解析和验证相当大的 XML(>100MB):

我的问题是内存消耗,所以我想我应该改用 iterparse 但我找不到一种方法来做同样的验证。

提前致谢。

0 投票
1 回答
6002 浏览

python - lxml etree.iterparse 错误“TypeError:读取文件对象必须返回纯字符串”

我想使用 lxml 解析 HTML 文档。我正在使用 python 3.2.3 和 lxml 2.3.4 ( http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml )

我正在使用etree.iterparse解析文档,但它返回以下运行时错误:

问题是:如何解决这个运行时错误?

非常感谢。

这是代码: