我写了一些代码,以便从网站上抓取一些数据。当我手动运行代码时,可以获得所有鞋子的所有信息,但是当我运行脚本时,每个变量只给我一个结果。
要获得我想要的所有结果,我可以更改什么?
例如,当我运行以下命令时,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
答案 0 :(得分:1)
您正在更新marque
和modele
变量,以在循环的每次迭代中覆盖其先前的值。在循环结束时,它们将仅包含分配给它们的最后一个值。
如果要提取所有值,则需要使用两个列表,并按如下所示将值附加到它们:
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)