python - 我得到的是折扣 %,而不是折扣价
问题描述
我正在尝试使用 bs4 构建一个网络爬虫,一切正常,除了当商品打折时,它输出折扣百分比,而不是价格,我不知道如何获得价格。
elif meno_karty == "8":
#710
page_url = "https://www.alza.sk/graficke-karty-s-cipom-nvidia-geforce-gt710/18858832.htm"
uClient = uReq(page_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"browsingitem"})
container = containers[0]
while alwaysTrue == True:
for container in containers:
meno = container.div.div.a.img["alt"].replace(" - Grafická karta", "")
cena = container.find("div",{"class":"priceInner"})
cas = datetime.now()
cas_teraz = cas.strftime("%H:%M:%S")
print("[" + cas_teraz + "]" + f"{Fore.CYAN} [MENO] {Style.RESET_ALL}" + meno)
print("[" + cas_teraz + "]" + f"{Fore.GREEN} [CENA] {Style.RESET_ALL}{Fore.RED}" + cena.span.text.replace("Cena nebola stanovená", "X") + Fore.WHITE)
if "€" in cena.span.text:
f = open("stock.txt", "a")
f.write(cas_teraz + " " + meno + " " + cena.span.text + "\n")
f.close()
playsound("ding.wav")
else:
time.sleep(0.1)
time.sleep(int(refresh))
Output:
[10:33:04] [MENO] GAINWARD GT710 2GB DDR3 SilentFX
[10:33:04] [CENA] 57,90 €
[10:33:06] [MENO] ASUS GeForce GT 710 SL-2GD5
[10:33:06] [CENA] 80,90 €
[10:33:08] [MENO] ASUS GeForce GT 710 SL-2GD5-BRK
[10:33:08] [CENA] 81,90 €
[10:33:10] [MENO] GIGABYTE GeForce GT 710 2GB
[10:33:10] [CENA] -9%
解决方案
priceInner 的结构如下
<div class="priceInner">
<div class="npc">
<span class="np">-9%</span>
<span class="np2">57,90 €</span>
</div>
<span class="c2">52,57 €</span>
<span class="c1">bez DPH <b>43,81 €</b></span>
</div>
所以你应该多走一步,在你的class="c2"
内部找到跨度,cena
就像你找到 div 一样class="priceInner"
推荐阅读
- c++ - c++ map,在使用扩展for循环进行迭代时删除元素是否安全?
- java - 具有 2 个子类的 Spring 父级使用 2 个不同的 bean 作为属性
- java - 如何映射两个文件中的键和值?
- angular - angular - 任何端口都已在使用中。使用“--port”指定不同的端口
- aframe - 在 A 帧 VR 世界中创建金字塔所需的代码和属性是什么?
- javascript - 从父母到孩子的反应事件委托
- algorithm - 在列中查找最大字符串长度的算法
- hive - 添加到 Hive 表(ORC 格式)中的新记录是附加到最后一个条带还是一个全新的条带?
- javascript - 用 puppeteer 抓取并返回 JSON
- c - C 正则表达式模式在预期时不匹配