使用BeautifulSoup检查属性和值是否存在

时间:2017-02-17 20:15:10

标签: python beautifulsoup screen-scraping

我正在使用python中的beautifulSoup阅读网页。 许多元素都是跨度,但是它们的class属性具有不同的值。 e.g。

Value1 = property.findChild("span", {"class" : "search-result-Val1"}).text
Value2 = property.findChild("span", {"class" : "search-result-Val2"}).text 

问题是,如果用户在保存项目时没有为Val1或Val2输入值,则他们不会出现在搜索结果页面上,因此我需要检查是否存在span标记,属性" class"在我尝试提取其值之前,使用该属性的特定值。

我怎么能这样做? GetAttr()方法没有帮助,因为它只是告诉我属性是否存在,但我无法检查该属性的值,这是这种情况下的区别因素。

2 个答案:

答案 0 :(得分:0)

对于此特定实例,您正在寻找class属性。

在这种情况下,您可以执行property.findChild("span")["class"],然后检查它是否包含您想要的某个类。

答案 1 :(得分:0)

使用list过滤器:

  

如果你传入一个列表,Beautiful Soup将允许字符串匹配该列表中的任何项。

property.findChild("span", class_=["search-result-Val1","search-result-Val2"] )