json выдает по одному результату
Помогите, пожалуйста, разобраться с вопросом. Пытаюсь спарсить сайт, собираю нужные данные, но, когда пытаюсь перевести их в 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)
Заранее спасибо!
Источник: Stack Overflow на русском