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

BeautifulSoup使用find,find_all常见问题汇总

1.soup.find(class='abc')报错,原因是find和find_all里面都不能直接把class作为参数,改写成如下任意一种就对了:

第一种,给class后面加下划线soup.find(class_='abc')

第二种,改写成:soup.find(attrs={"class":"abc"})

2.想要查询类名为abc或def怎么办,也就是说 如何在find或find_all里表达逻辑or?

解决办法:soup.find(class_=['abc','def'])

3.如何获得标签中的属性的值,比如获取href的内容?

<a href='www.baidu.com'>hehehe</a>

写成:soup.a.get('href')  输出就会是hehehe

版权声明:BeautifulSoup使用find,find_all常见问题汇总 来源于网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:hehehe 写成:soup.a.get('href') 输出就会是hehehe 版权声明:BeautifulSoup使用find,find_all常见问题汇总 来源于网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_34177064/article/details/88197195">https://blog.csdn.net/weixin_34177064/article/details/88197195

我们正在废弃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

谢谢您的帮助!

我没有测试过这个,但我相信你可以将一个函数作为参数传递给 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)

https://www.javaroad.cn/questions/18964

(0)

相关推荐