有没有办法让所有结果都显示出来?

时间:2019-04-15 06:18:35

标签: python-3.x beautifulsoup

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

0 个答案:

没有答案