如何抓取和构造相同 div 但不同子 类 的价格?
How to scrape and construct price that is in the same div but different sub classes?
我正在尝试用两个不同的标签构建价格(见下图)。您如何嵌套搜索以使其在 div class="price"、span 和子标签中显示?
如何从 div class="price"
中的 span 和子标签中获取数字
我尝试了以下方法:
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
目标:价格 1.39 欧元
你想要的是
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.
你可以从定义你想要挖掘的 div 开始,在这种情况下它是 div 和 class 'price',你这样做只是就像您已经在尝试处理跨度一样:
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)
这里我们divide分带100不然就不是分了,我们用round标签只取小数点后两位
我正在尝试用两个不同的标签构建价格(见下图)。您如何嵌套搜索以使其在 div class="price"、span 和子标签中显示?
如何从 div class="price"
中的 span 和子标签中获取数字我尝试了以下方法:
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
目标:价格 1.39 欧元
你想要的是
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.
你可以从定义你想要挖掘的 div 开始,在这种情况下它是 div 和 class 'price',你这样做只是就像您已经在尝试处理跨度一样:
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)
这里我们divide分带100不然就不是分了,我们用round标签只取小数点后两位