python - 迭代大量 xml 文档

标签 python xml list loops beautifulsoup

我有大约 56,000 个 xml 文档的列表,每个文档都需要打开并提取一个属性,并根据另一个列表(csv 文件)验证属性值

目前我正在使用它,它适用于一个 xml 文档

soup = BeautifulSoup(xmlText)
nameTag = soup.find('instrument', {"name": True})
idTag = soup.find('instrument', {"id": True})
print(idTag['id'] + "," + nameTag['name'])

这给了我该项目的 ID 和名称,然后我可以将其与其他列表进行比较。 但对于 56,000 份此类文档,处理此问题的最佳方法是什么? 我需要下载每个文档,然后将其加载到 BeautifulSoup 中并提取名称和 ID。我可以在一个简单的 for 循环中完成所有这些工作吗?

提前非常感谢。

最佳答案

对于大量下载(和高网络延迟),我建议使用库来获取 xml 页面(存在许多此类包/库来执行此操作)并将文本直接传递到 BeautifulSoup 解析器。我猜测网络很可能是这里的瓶颈,所以我建议您研究并发包/库,以便您可以在下载其他页面的同时处理页面(查看multiprocessing.map_async ,或类似的东西)。话虽如此,您可以在 for 循环中执行此操作(如果您已经有了名称)并串行处理,但会增加运行时间。

这是您可以做什么的粗略概述,但我不会提供代码,因为并发可能会变得困惑,而且我目前没有太多时间。

关于python - 迭代大量 xml 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436025/

相关文章:

python - 在Python中使用虚拟环境导入模块

javascript - 如何在收到警报后取消表单的操作?

java - Jackson 序列化器默认包装列表?

python - 使用带有格式化字符串的Python exec() 函数?

python - 如何将 matplotlib 生成的多个图发送到 pptx 而没有任何重叠?

python - 运行时错误: size mismatch, m1 : [28 x 28], m2:[784 x 128]

java - 使用java解析xml(w3.org)

.net - 在数据库绑定(bind)的 gridview 中获取 xml 文件的值

python - 将 pandas 数据框列表转换为 json

python - 是否有与 Python 的列表理解等效的 Scala?