【问题标题】:Trying to monitor a product from a webpage, doesnt work as intented尝试从网页监控产品,无法按预期工作
【发布时间】:2019-04-03 10:27:29
【问题描述】:

requests/bs4 非常陌生。我向一个网页(一家商店)发出请求,并通过 bs4 将其解析为汤。如果汤包含文本“Sold Out”它应该打印出“Sold Out”,否则“In Stock”,但即使正文不包含“Sold Out”这个词,它仍然会打印“Sold Out”

我认为格式有问题,我尝试将其更改为soup.body.findAll(text="Sold Out")

import requests
import time
from bs4 import BeautifulSoup


r = requests.get("https://www.starcowparis.com/shoes/2030-adidas-alphaedge-4d-m.html")
src = (r.content)
soup = BeautifulSoup(src, "lxml")
soup.find_all("div")



while True:
    soup.body.findAll(text="Sold Out")
    []
    print("Sold Out")
else:
    print("INSTOCK")

即使正文中没有“Sold Out”,它总是打印出“SOLD OUT”

【问题讨论】:

    标签: python python-3.x beautifulsoup python-requests


    【解决方案1】:

    那是因为你有一个 while 循环,你想要一个 if 块:

    if soup.body.findAll(text="Sold Out"):
        print("Sold Out")
    
    else:
        print("INSTOCK")
    

    【讨论】:

    • 解决了!非常感谢您回答我的第一个 stackoverflow 问题
    【解决方案2】:

    while True 下的语句将永远被执行,因为无论如何True 永远为真。

    您要做的是改用if 子句并检查正文是否包含与"Sold Out" 模式匹配的任何内容:

    if len(soup.body.findAll(text="Sold Out")) > 0:
        print("Sold Out")
    else:
        print("INSTOCK")
    

    【讨论】:

      猜你喜欢
      • 2016-01-13
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多