繁体   English   中英

在for循环中处理所有数据,而不是仅处理一个元素

[英]Processing all data in a for loop instead of only one element

我写了一些代码,以便从网站上抓取一些数据。 当我手动运行代码时,可以获得所有鞋子的所有信息,但是当我运行脚本时,它只为每个变量提供一个结果。

我可以更改什么以获得我想要的所有结果?

例如,当我运行下面,我只得到一个结果对于marque和一个用于modele ,但是当我在我的终端做到这一点,我可以看到vignette包含多个值。

import requests
from bs4 import BeautifulSoup

r=requests.get('https://www.sarenza.com/store/product/gender-type/list/view?gender=1&type=76&index=0&count=99')
soup=BeautifulSoup(r.text,'lxml')
vignette=soup.find_all('li',class_='vignette')

for i in range(len(vignette)):
    marque=vignette[i].contents[3].text
    modele=vignette[i].contents[5].contents[3].text

您正在更新您的marquemodele变量,以在循环的每次迭代中覆盖其先前的值。 在循环结束时,它们将仅包含分配给它们的最后一个值。

如果要提取所有值,则需要使用两个列表,并按如下所示将值附加到它们:

marques = []
modeles = []
for i in range(len(vignette)):
    marques.append(vignette[i].contents[3].text)
    modeles.append(vignette[i].contents[5].contents[3].text)

或者,以更Python化的方式:

marques = list(v.contents[3].text for v in vignette)
modeles = list(v.contents[5].contents[3].text for v in vignette)

现在,您将拥有所需的所有值,可以对其进行处理或打印出来,如下所示:

for marque, modele in zip(marques, modeles):
    print('Marque:', marque, 'Modèle:', modele)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM