Снова с webscraping FreshDirect, и все мои результаты должны появиться в списке, который я настроил для словарей (в коде это выглядит как cart_items).Однако появляется только последний.Как я могу заставить их все появляться?
Сначала я просто поместил параметры для желаемых результатов в список словарей.Затем я попытался использовать цикл for, но он дал мне те же результаты.Проверьте код ниже:
fd = []
cart_items = []
needed_value = []
standing_value = []
def get_values():
inputs = str(soup.find_all('input', class_='qty'))
cart_items.append(inputs)
get_values()
def get_ids():
for result in cartline:
cart_item = str(result.find('a', {'class':'cartline-link'}, href = re.compile('/product_modify.jsp')))
#print(type(cart_item))
#print(cart_item)
cart_items.append(cart_item)
get_ids()
def get_tags():
new_soup = BeautifulSoup(str(cart_items), 'lxml')
#print(type(new_soup))
#print(len(new_soup))
#pp.pprint(new_soup)
current_id = new_soup.find_all('a')
for x in current_id:
ids = x.get('id')
current_product_name = new_soup.find_all('a')
for y in current_product_name:
product_name = y.contents[0]
current_quantity = new_soup.find_all('input')
for z in current_quantity:
quantity = z.get('value')
current_product = {'id': ids[14:], 'product_name': product_name, 'quantity': quantity}
fd.append(current_product)
get_tags()
print(fd)
В настоящее время я получаю следующие результаты:
[{'id': '-812063945', 'product_name': 'Baby Avocados', 'quantity': '1'}]
Мне нужны результаты для всех в корзине, в идеале, для каждого элементаИмея собственный список словарей (для контекста: у меня около 30 наименований, а не только один)Нужно ли составлять пустой список для каждого элемента?Я просто не уверен, как мне решить эту проблему, но я подумал, что цикл for какой-то был бы необходим.Большое спасибо сообществу Stackoverflow за помощь в этом.Все это скоро начнет собираться.