我目前正在编写一个脚本,使用beautifulsoup解析xml网页。 xml文件的示例是here。该脚本基本上将输出第一个产品URL(来自每个' loc'标签),该URL匹配已输入的关键字列表。目前,脚本的控制流程如下:
为每个url标记运行for循环,并将每个loc文本放入列表(inventory_url)
for item in soup.find_all('url'):
inventory_url.append(item.find('loc').text)
遍历列表,并输出匹配所有关键字的第一个元素,其中'关键字'是输入的关键字列表
for item in inventory_url:
if all(kw in item for kw in keywords):
return item
我想知道是否有办法让解析速度更快。我看过汤斯特拉斯,但是当我孤立的时候才找到了#loc;'标签,它也包含' image:loc'标签,我不需要。
非常感谢你。
答案 0 :(得分:0)
如果您可以将文件作为简单文本流式传输,我认为正则表达式会非常快......
import re
pattern = re.compile(r'<url>[\S\s]*?<loc>([\S\s]*?)</loc>[\S\s]*?</url>')
for match in re.finditer(pattern, file.read()):
#do stuff
[\S\s]*?
是一种懒惰的方式来匹配字面上的任何东西,直到我们达到下一步。 ?
对于不做这个休息至关重要。
答案 1 :(得分:-1)