1

我有一个大约 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 循环中完成所有这些吗?

提前非常感谢。

4

1 回答 1

1

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

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

于 2013-08-26T03:42:25.963 回答