@robben_55

Проблема со словарем?

Привет всем. Парсю один сайт с ценами на товары.
Через реквест гет принимаю json file со следующими данными:
первый возможный вариант:
{"success":true}
Второй:
{"success":true,"lowest_price":"£1,321.05"}
Третий вариант:
{"success":true,"median_price":"£1,321.05"}
Четвертый вариант:
null

И когда в цикл идет товар у которого нету ни низкой цены, и ни средней цены (первый вариант) мой код ломается, голову ломаю никак не могу придумать как его так же учесть в коде. Для второго и третьего код не ломается. Сейчас ниже покажу отрывок из кода:
r = requests.get(ITEM_URL.format(item[0]) )  #item[0] название товара вставляется в конец ссылки
r = r.json() #конвертирую это в жсон формат

if r == NULL: #для четвертого вариант в случае если сервер вернет null из-за нагрузки
  continue

try:
            lowest_p = str(r["lowest_price"])

        except KeyError:
            if r["success"] != False and r["median_price"] != None:
                lowest_p = str(r["median_price"])
            elif r["success"] == True and r["lowest_price"] == None and r["median_price"] == None:
                continue
            else:
                continue

except TypeError:
            continue


Когда в цикл идет первый вариант с success: True и все, цикл ломается. Подскажите, как решить эту проблему.
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
if r is None:
    continue

price = r.get('lowest_price', r.get('median_price', None))
if price is None:
    continue
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы