GOOGLE ADS

Sonntag, 24. April 2022

Warum geben gekratzte Daten None zurück

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 baseurlVerkettung 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-titleda 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

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...