如何使用 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')
我需要使用 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')