Python 如何刮除所有元素而不是一个?

Python 如何刮除所有元素而不是一个?,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我想从一个页面上抓取所有元素(就像所有的价格一样)-但是只有一个出现,即使len(info)=100 这是我的密码: r=requests.get('https://www.marionnaud.fr/parfum/parfum-femme/c/P0100?q=%3Arank-desc&page=0&pageSize=100') page=r.content soup=BeautifulSoup(page) info=soup.find_all('a',class_='Produ

我想从一个页面上抓取所有元素(就像所有的价格一样)-但是只有一个出现,即使
len(info)=100

这是我的密码:

r=requests.get('https://www.marionnaud.fr/parfum/parfum-femme/c/P0100?q=%3Arank-desc&page=0&pageSize=100')
page=r.content
soup=BeautifulSoup(page)
info=soup.find_all('a',class_='ProductInfoAnchor')


for i in range(len(info)):
    marque=info[i].contents[1].contents
    nom=info[i].contents[3].contents

price=soup.find_all('div',class_="price")
for i in range(len(price)):
    prix=price[i].contents[1].contents[1].contents
如何找到解决方案?

要将产品信息与价格“配对”,可以使用方法

例如:

import requests
from bs4 import BeautifulSoup

url = 'https://www.marionnaud.fr/parfum/parfum-femme/c/P0100?q=%3Arank-desc&page=0&pageSize=100'

soup = BeautifulSoup( requests.get(url).content, 'html.parser' )

data = []
for product_info in soup.select('.ProductInfoAnchor'):
    brand = product_info.select_one('.brand').get_text(strip=True)
    range_name = product_info.select_one('.range_name').get_text(strip=True)
    product_name = product_info.select_one('.product_name').get_text(strip=True)
    price = product_info.find_next('div', {'class':'price'}).get_text(strip=True, separator=' ')
    data.append((brand, range_name, price, product_name))

# print the data:
print('{:<4} {:<30} {:<30} {:<30} {:<30}'.format('No.', 'Brand', 'Range Name', 'Price', 'Product Name'))
for i, row in enumerate(data, 1):
    print('{:<4} {:<30} {:<30} {:<30} {:<30}'.format(i, *row))

如果你的工作是分析网站,请尝试更多pageSize=100->300??或者迭代页面=1,页面=2,etci将在问题出现后处理另一个页面,问题是对于一个页面,我只得到一个价格,一个名称…回溯(最近一次调用):文件“/Users/clara/Desktop/Cours M2/marionnaud.py”,第28行,在第18行的“scrap_页面(i)文件“/Users/clara/Desktop/Cours M2/marionnaud.py”,在废品页面price=product\u info.find\u next('div',{'class':'price'}).get\u text(strip=True,separator='')AttributeError:'NoneType'对象没有属性'get\u text'
No.  Brand                          Range Name                     Price                          Product Name                  
1    DIOR                           J'ADORE                        A partir de 64 €99             Eau de Parfum vaporisateur    
2    Guerlain                       SHALIMAR                       844 €99                        Eau de Parfum Le Flacon aux Abeilles Blanches
3    Guerlain                       LES EAUX                       711 €99                        Eau de Cologne Impériale Le Flacon aux Abeilles Dorées
4    Guerlain                       HEURE BLEUE                    599 €99                        Eau de Toilette Le Flacon aux Abeilles Dorées
5    Guerlain                       L'HEURE BLEUE                  506 €99                        Eau de Toilette               
6    Guerlain                       JARDINS DE BAGATELLE           506 €99                        Eau de Toilette               

...and so on.