我正在嘗試用兩個不同的標簽來構建價格(見下圖)。如何嵌套搜索,使其在 div 、span 和 sub 標簽中查找?

如何從 div 中的 span 和 sub 標簽中取出數字
我嘗試了以下方法:
coldbeetrootsoup=BeautifulSoup(f,'html.parser')
try:
price = coldbeetrootsoup.find("span",{"class": None}).text.replace('\n',"")
except:
price = None
try:
subprice = coldbeetrootsoup.find("sub",{"class": None}).text.replace('\n',"")
except:
subprice = None
鏈接:https ://www.rimi.lt/e-parduotuve/lt/produktai/vaisiai-darzoves-ir-geles/vaisiai-ir-uogos/obuoliai-/fas-liet-obuoliai-ligol-nuraude-anyks-vnt /p/923923
目標價:1.39 歐元
uj5u.com熱心網友回復:
你想要的是
import re
import requests
from bs4 import BeautifulSoup
html = requests.get(
"https://www.rimi.lt/e-parduotuve/lt/produktai/vaisiai-darzoves-ir-geles/vaisiai-ir-uogos/obuoliai-/fas-liet-obuoliai-ligol-nuraude-anyks-vnt/p/923923").text
soup = BeautifulSoup(html, features="html.parser")
price_div = soup.find("div", {"class": "price"})
full_part = price_div.find("span").text
cents_part = price_div.find("sup").text
currency = price_div.find("sub").text
currency = re.sub("\s ", "", currency)
print(f"{full_part}.{cents_part} {currency}") # 1.39 €/vnt.
uj5u.com熱心網友回復:
您可以從定義要挖掘的 div 開始,在這種情況下,它是具有“價格”類的 div,就像您已經嘗試使用跨度一樣:
price = soup.find('div', {'class' : 'price'})
一旦我們有了這個價格,我們就可以不用搜索整個 html,而只需在這個 div 中搜索想要的標簽,如下所示:
euro = price.find('span')
cent = price.find('sup')
現在要得到你想要的,你可以這樣做:
print(f"{euro.text}.{cent.text}")
或者如果你想要浮點變數
price_tag = round((int(euro.text) (int(cent.text)/100)),2)
在這里,我們將美分除以 100,否則它將不是美分,我們使用圓形標簽只得到兩位小數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/439606.html
