如何使用 BeautifulSoup 提取嵌套 HTML

How To Extract Nested HTML Using BeautifulSoup

我需要使用 BeautifulSoup 为下面的 HTML 代码提取价格。

<div class="price-original">
  <span class="product-price-amount">
    <span class="notranslate"> £899.89</span>
  </span>
<div>

我无法使用下面的代码,因为网页上有多个使用相同 html 语法的价格实例。

price1 = soup.find('div', class_='price-original').find('span', class_="notranslate").text.strip().replace("£","").replace(",","")
print('Price:', price1)

出于这个原因,我需要一种基于所有 3 个 html 元素进行提取的方法,因为这会产生一个独特的 HTML 实例。

你可以直接使用

soup.find('span', class_ = 'notranslate').string

而不是一个接一个地遍历 div>span>span 树。
这将为您提供 ' £899.89',您可以根据需要对其进行格式化。

粗略浏览一下网站,您感兴趣的价格(即页面上主要产品的最终价格)似乎在不同 html 内,具体取决于产品是否有没有打折

假设您的 soup 实际包含此信息,对于打折产品,请尝试使用

soup.select_one('div.product-price-container span.you-pay-value')

对于非折扣产品,尝试:

soup.select_one('div.product-price-container span.product-price-amount > span.notranslate')