почему при парсинге в файл 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 по каждому отдельному товару.