我有大约 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/