首页 文章

Python - 美味汤或在soup.find_all(...)中的条件

提问于
浏览
2

我们正在废弃Amazon.in网站以检索任何产品的价格 . 所有产品对'span'标签中的'id'属性具有不同的值,例如;

id = 'priceblock_ourprice',  id = 'priceblock_saleprice', and  id = 'priceblock_dealprice'.

我们的任务是使用Beautiful Soup中的find_all(..)方法检索产品的价格 . 根据我们的基本知识,我们只能为find_all(..)方法提供一个参数,如下所示:

m = soup1.find_all('span', {'id': 'priceblock_ourprice'})

有没有办法使用OR条件为find_all(..)方法提供多个参数?

以下是具有相同“id”属性的不同值的链接:

Link 1

Link 2

Link 3

谢谢您的帮助!

1 回答

  • 2

    我没有测试过这个,但我相信你可以将一个函数作为参数传递给 find_all() 所以你可以尝试类似的东西:

    def check_id(tag):
        valid_ids = ['priceblock_ourprice','priceblock_saleprice','priceblock_dealprice']
        if tag.has_attr('id'):
            return tag['id'] in valid_ids
        else:
            return False
    
    m = soup1.find_all(check_id)
    

相关问题