Как мне разместить список под списком в файле json
with open("index.html") as file:
src = file.read()
soup = bs4.BeautifulSoup(src, "lxml")
# ищем и собирем названия продуктов
products_names = soup.find_all(
"div", class_="card-sale__col card-sale__col_content")
products_all_names = []
for product_name in products_names:
try:
prod_name = product_name.find(
"div", class_="card-sale__title").find("p").text.strip()
products_all_names.append(prod_name)
except Exception:
continue
# ищем и собирем старые цены продуктов
products_old_price = soup.find_all("div", class_="label__price_old")
products_all_old_price = []
for product_old_price in products_old_price:
try:
products_ones_integer_price = product_old_price.find(
"span", class_="label__price-integer").text.strip()
products_ones_decimal_price = product_old_price.find(
"span", class_="label__price-decimal").text.strip()
products_all_old_price.append(
f"{products_ones_integer_price},{products_ones_decimal_price}Р")
except Exception:
continue
# ищем и собирем новые цены продуктов
products_prices = soup.find_all("div", class_="label__price_new")
products_all_price = []
for product_price in products_prices:
try:
products_ones_integer_price = product_price.find(
"span", class_="label__price-integer").text.strip()
products_ones_decimal_price = product_price.find(
"span", class_="label__price-decimal").text.strip()
products_all_price.append(
f"{products_ones_integer_price},{products_ones_decimal_price}Р")
except Exception:
continue
# ищем и собираем дату акции
products_sale_date = soup.find_all("div", class_="card-sale__date")
products_all_sale_date = []
for product_sale_date in products_sale_date:
product_start_sale_date = product_sale_date.find(
"p", class_="")
product_finish_sale_date = product_start_sale_date.find_next(
"p", class_="").text.strip()
products_all_sale_date.append(
f"{product_start_sale_date.text} {product_finish_sale_date}")
# создадим карточку одного товара
product_ones_card = ({
"Название товра": prod_name,
"Старая цена товара": f"{products_ones_integer_price},{products_ones_decimal_price}Р",
"Новая цена товара": f"{products_ones_integer_price},{products_ones_decimal_price}Р",
"Сроки проведения акции": f"{product_start_sale_date.text} {product_finish_sale_date}"
})
product_card = soup.find_all("a", class_="card-sale_catalogue")
lenght = len(product_card)
while lenght > 0:
products_all_cards = []
products_all_cards.append(product_ones_card)
lenght -= 1
with open("products.json", "w", encoding="utf-8") as file:
json.dump(products_all_cards, file, indent=4, ensure_ascii=False)
на выходе я хотел-бы получить
{
"Название товара": "День красоты",
"Старая цена товара": "−10%,00Р",
"Новая цена товара": "−10%,00Р",
"Сроки проведения акции": "с 22 апреля до 23 апреля"
}
{
"Название товара": "Другое",
"Старая цена товара": "−10%,00Р",
"Новая цена товара": "−10%,00Р",
"Сроки проведения акции": "с 22 апреля до 23 апреля"
}
{
"Название товара": "Другое",
"Старая цена товара": "−10%,00Р",
"Новая цена товара": "−10%,00Р",
"Сроки проведения акции": "с 22 апреля до 23 апреля"
}
{
"Название товара": "Другое",
"Старая цена товара": "−10%,00Р",
"Новая цена товара": "−10%,00Р",
"Сроки проведения акции": "с 22 апреля до 23 апреля"
}
А выводит только один блок
{
"Название товара": "Другое",
"Старая цена товара": "−10%,00Р",
"Новая цена товара": "−10%,00Р",
"Сроки проведения акции": "с 22 апреля до 23 апреля"
}
заранее спасибо