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.