我有一个大约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循环中完成所有这些吗?
提前多多感谢。
答案 0 :(得分:1)
由于大量下载(以及高网络延迟),我建议使用库来获取xml页面(存在许多此类包/库)并将文本直接传递给BeautifulSoup解析器。我猜这个网络很可能是这里的瓶颈,所以我建议你研究一个并发包/库,这样你就可以在下载其他页面时处理页面(看看multiprocessing.map_async
,或者类似的东西) 。话虽如此,您可以在for循环中执行此操作(如果已有名称)并按顺序处理,但会牺牲运行时间。
这是关于你可以做什么的粗略概述,但我不会提供代码,因为并发可能会变得混乱,而且我现在没有太多时间。