使XML解析器更快

时间:2017-01-05 20:06:02

标签: python xml beautifulsoup

我目前正在编写一个脚本,使用beautifulsoup解析xml网页。 xml文件的示例是here。该脚本基本上将输出第一个产品URL(来自每个' loc'标签),该URL匹配已输入的关键字列表。目前,脚本的控制流程如下:

  • 将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'标签,我不需要。

非常感谢你。

2 个答案:

答案 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)