如何在BeautifulSoup4 - Python中选择具有多个类的元素?

时间:2018-05-25 19:49:58

标签: python beautifulsoup

这里我们有一小段html页面:

on_sale

当类price_sale = product_item.find('span',class_='food_price on_sale') price_price = product_item.find('span',class_='food_price').text print(price_sale) #when there is no 'food_price on_sale' display None if price_sale=='None': price_sale = -1 else: price_sale = product_item.find('span',class_='price sale').text print(price_sale) 可用时,我想设置变量price_sale = span中的值。如果不是,我想将变量值设置为-1。

我正在使用的这个代码:

Traceback (most recent call last):
  File "/home/ila/vhosts/crawler/bucky.py", line 144, in <module>
    price_sale = product_item.find('span',class_='food_price on_sale').text
AttributeError: 'NoneType' object has no attribute 'text'

我收到了以下错误:

class="food_price on_sale"

似乎没有if price_sale=='None':时,它不会进入None。我猜是{{1}}似乎不是一个字符串。

有人知道如何比较这个吗?

1 个答案:

答案 0 :(得分:1)

这应该有所帮助。

<强>演示:

from bs4 import BeautifulSoup
s = """<p class="food_price">
  <span class="food_price on_sale">$45</span>
  <span class="food_price">$65</span>
</p>
"""

soup = BeautifulSoup(s, "html.parser")
price_sale = soup.find('span',class_='food_price on_sale')

if price_sale:
    price_sale = price_sale.text
else:
    price_sale = -1
print(price_sale)

<强>输出:

$45