Попытка контролировать продукт с веб-страницы, не работает как задумано - PullRequest
1 голос
/ 03 апреля 2019

Очень плохо знаком с requests / bs4.Я сделал запрос на веб-страницу (магазин) и разобрал его в суп через bs4.Если суп содержит текст «Распродано», он должен распечатать меня «Распродано», иначе «В наличии», но даже если тело не содержит слова «Распродано», оно все равно печатает «Распродано»

Я думаю, что есть проблема с форматированием, и я попытался изменить его на 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 неттело

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Это потому, что у вас есть цикл while, в котором вы хотите блок if:

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

else:
    print("INSTOCK")
1 голос
/ 03 апреля 2019

Оператор под while True всегда будет выполняться, потому что True всегда будет верным, несмотря ни на что.

Вместо этого вы хотите использовать предложение if и проверить, является ли телосодержит любые совпадения шаблона "Sold Out":

if len(soup.body.findAll(text="Sold Out")) > 0:
    print("Sold Out")
else:
    print("INSTOCK")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...