почему при парсинге в файл json заносится только 1 продукт?

при парсинге сайта в файл заносится только первый телефон со страницы. как сделать чтобы добавлялись все телефоны со страницы?

def get_content(html):
    # soup = bs4.BeautifulSoup(html, 'html.parser')
    # items = soup.find_all('div', class_='products__unit')
    soup = bs4.BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='products-list__body')
    xiaomi_phones = {}

    for item in items:
            title = item.find('div', class_='products__unit__title').get_text(strip=True),
            phone_image = HOST + item.find('div', class_='products__unit__image').find('img').get('src'),
            link_title = HOST + item.find('div', class_='products__unit__title').find('a').get('href'),
            title_info = item.find('div', class_='products__unit__info').get_text(strip=True),
            title_price = item.find('div', class_='products__unit__price').get_text(strip=True),
            title_id = item.find('div', class_='products__unit').get('id')
            news_id = URL_Xiaomi_phones.split('/')[-2]



            xiaomi_phones[news_id] = {
                'title': title,
                'phone_image': phone_image,
                'link_title': link_title,
                'title_info': title_info,
                'title_price': title_price,
                'titile_id': title_id

            }

    with open('xiaomi_phones.json', 'w', encoding='utf-8') as file:
        json.dump(xiaomi_phones, file, indent=4, ensure_ascii=False)

Ответы (1 шт):

Автор решения: AnKus

смею предположить, что find_all products list body - это блок со всеми карточками товаров, поэтому и ищет и добавляет первый попавшийся элемет. А Вам надо искать (find_all) по каждому отдельному блоку с отдельным товаром. А потом уже item in items по каждому отдельному товару.

→ Ссылка