再次通过web抓取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社区为我提供了帮助。一切很快就会开始融合。