json выдает по одному результату

Рейтинг: 0Ответов: 0Опубликовано: 31.07.2023

Помогите, пожалуйста, разобраться с вопросом. Пытаюсь спарсить сайт, собираю нужные данные, но, когда пытаюсь перевести их в json, результат выдается только одной страницы. Точнее сказать, выдаются-то все, но отображаются они по очереди, а в итоговом файле выдается результат только последней страницы.

    import requests
    from bs4 import BeautifulSoup
    from time import sleep
    import json

    OUT_FILENAME = 'out.json'

    list_card_url = []
        headers = {
    'User-Agent': ('Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20100101 '
                   'Firefox/14.0.1'),
        'Accept':
        'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language':
        'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
        'Accept-Encoding':
        'gzip, deflate',
        'Connection':
        'keep-alive',
        'DNT':
        '1'
    }

    for count in range(1,2):

        sleep(1)
        url = f'https://hozopttorg2000.ru/catalog/posuda/?PAGEN_1={count}'
        resource = requests.get(url, headers=headers)
        soup = BeautifulSoup(resource.text, "lxml")
        data = soup.find_all(class_="product-list__item product")

        for i in data:
            carl_url = "https://hozopttorg2000.ru" + i.find("a").get("href")
            list_card_url.append(carl_url)

    for carl_url in list_card_url:
        resource = requests.get(carl_url, headers=headers)
        soup = BeautifulSoup(resource.text, "lxml")
        data = soup.find(class_="content")
        name = data.find(class_="content__title content__title_big").get_text(strip=True)
        price = data.find(class_="item__price-value").get_text(strip=True)
        artikul = data.find(class_="item__specs-value").get_text(strip=True)

    karta_new = {
        name: "Название",
        price: "Цена",
        artikul: "Артикул"
    }

    with open(OUT_FILENAME, 'w', encoding="utf-8") as f:
        json.dump(karta_new, f, ensure_ascii=False, indent=1)

Заранее спасибо!

Ответы

Ответов пока нет.