Wie kann man das beheben?
import requests
from bs4 import BeautifulSoup
import pandas as pd
baseurl = "https://www.richilio.com/collections/chaussures-de-la-ville"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
productlinks = []
t={}
data=[]
c=0
for x in range(1,6):
k = requests.get('https://www.richilio.com/collections/chaussures-de-la-ville'.format(x)).text
soup=BeautifulSoup(k,'html.parser')
productlist = soup.find_all("div",{"class":"product-thumb"})
for product in productlist:
link = product.find("a",{"class":"product-thumb-href"}).get('href')
productlinks.append(baseurl + link)
for link in productlinks:
f = requests.get(link,headers=headers).text
hun=BeautifulSoup(f,'html.parser')
try:
price=hun.find("span",{"class":"money"}).text.replace('\n',"")
except:
price = None
try:
about=hun.find("p",{"data-mce-fragment":"1"}).text.replace('\n',"")
except:
about=None
try:
rating = hun.find("div",{"class":"jdgm-prev-badge"}).text.replace('\n',"")
except:
rating=None
try:
name=hun.find("h1",{"class":"product-item-caption-title -product-page text-center"}).text.replace('\n',"")
except:
name=None
whisky = {"name":name,"price":price,"rating":rating,"about":about}
data.append(whisky)
c=c+1
print("completed",c)
df = pd.DataFrame(data)
print(df)
Also habe ich versucht, einige Daten von der E-Commerce-Website zu kratzen, aber wenn ich versuche, den Namen auszudrucken, ist jedes einzelne Ergebnis None, was ist die Lösung? Also habe ich versucht, einige Daten von der E-Commerce-Website zu kratzen, aber wenn ich versuche, den Namen auszudrucken, ist jedes einzelne Ergebnis None, was ist die Lösung? Also habe ich versucht, einige Daten von der E-Commerce-Website zu kratzen, aber wenn ich versuche, den Namen auszudrucken, ist jedes einzelne Ergebnis None, was ist die Lösung?
Lösung des Problems
Hauptproblem ist Ihre baseurl
Verkettung mit dem Produktwert href
, die zu einem 404 führt ( https://www.richilio.com/collections/chaussures-de-la-ville/collections/chaussures-de-la-ville/products/milo-nero )
Wählen Sie den Namen nur aus, indem Sie auf die Klasse verweisen, product-item-caption-title
da es ein Problem mit einem der anderen Klassennamen gibt - Verwenden Sie auch strip()
anstelle von replace()
oder besser get_text(strip=True)
:
name=hun.find("h1",{"class":"product-item-caption-title"}).get_text(strip=True)
Beispiel
...
baseurl = "https://www.richilio.com"
...
for link in productlinks:
f = requests.get(link,headers=headers).text
hun=BeautifulSoup(f,'html.parser')
try:
price=hun.find("span",{"class":"money"}).get_text(strip=True)
except:
price = None
try:
about=hun.find("p",{"data-mce-fragment":"1"}).get_text(strip=True)
except:
about=None
try:
rating = hun.find("div",{"class":"jdgm-prev-badge"}).get_text(strip=True)
except:
rating=None
try:
name=hun.find("h1",{"class":"product-item-caption-title"}).get_text(strip=True)
except:
name=None
whisky = {"name":name,"price":price,"rating":rating,"about":about}
data.append(whisky)
...
Keine Kommentare:
Kommentar veröffentlichen