wollen helfen? Hier sind Ihre Möglichkeiten:","Crunchbase","Über uns","Vielen Dank an alle für die großartige Unterstützung!","Schnelle Links","Partnerprogramm","Prämie","ProxyScrape Premium-Testversion","Proxy-Typen","Proxy-Länder","Proxy-Einsatzfälle","Wichtig","Cookie-Politik","Haftungsausschluss","Datenschutzbestimmungen","Bedingungen und Konditionen","Soziale Medien","Facebook","LinkedIn","Twitter","Quora","Telegramm","Diskord","\n © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belgien | VAT BE 0749 716 760\n"]}
Web Scraping ist die Kunst, Daten aus dem Internet zu extrahieren und sie für sinnvolle Zwecke zu nutzen. Manchmal wird es auch als Webdatenextraktion oder Webdatenerfassung bezeichnet. Für Neulinge ist es dasselbe wie das Kopieren von Daten aus dem Internet und deren lokale Speicherung. Es handelt sich jedoch um einen manuellen Prozess. Web Scraping
Web Scraping ist die Kunst, Daten aus dem Internet zu extrahieren und sie für sinnvolle Zwecke zu nutzen. Manchmal wird es auch als Webdatenextraktion oder Webdatenerfassung bezeichnet. Für Neulinge ist es dasselbe wie das Kopieren von Daten aus dem Internet und deren lokale Speicherung. Allerdings ist dies ein manueller Prozess. Web Scraping ist ein automatisierter Prozess, der mit Hilfe von Web Crawlern funktioniert. Webcrawler stellen über das HTTP-Protokoll eine Verbindung zum Internet her und ermöglichen es dem Benutzer, Daten auf automatisierte Weise abzurufen. Man kann das Internet als angereicherten Boden und Daten als das neue Öl betrachten, während Web Scraping die Technik ist, dieses Öl zu extrahieren.
Die Fähigkeit, Daten aus dem Internet zu scrapen und zu analysieren, ist zu einer unverzichtbaren Technik geworden, unabhängig davon, ob man Datenwissenschaftler, Ingenieur oder Vermarkter ist. Es gibt verschiedene Anwendungsfälle, in denen Web Scraping eine große Hilfe sein kann. In diesem Artikel werden wir mit Python Daten von Amazon scrapen. Schließlich werden wir auch die gescrapten Daten analysieren und sehen, wie wichtig sie für jeden normalen Menschen, Datenwissenschaftler oder Betreiber eines E-Commerce-Geschäfts sind.
Nur eine kleine Vorsichtsmaßnahme: Wenn Sie neu in Python und Web Scraping sind, könnte dieser Artikel für Sie etwas schwieriger zu verstehen sein. Ich würde vorschlagen, dass Sie zunächst die Einführungsartikel unter ProxyScrape durchzuarbeiten und dann zu diesem Artikel zu kommen.
Lassen Sie uns mit dem Code beginnen.
Zunächst werden wir alle notwendigen Bibliotheken importieren, die für den Code erforderlich sind. Diese Bibliotheken werden für das Scraping und die Visualisierung von Daten verwendet. Wenn Sie die Details der einzelnen Bibliotheken kennenlernen möchten, können Sie deren offizielle Dokumentation besuchen.
importiere pandas als pd
import numpy as np
import matplotlib.pyplot as plt
importieren seaborn as sns
%matplotlib inline
importieren re
importiere Zeit
from datetime importieren datetime
importieren matplotlib.dates as mdates
import matplotlib.ticker as ticker
from urllib.request import urlopen
von bs4 importieren BeautifulSoup
import requests
Jetzt werden wir die nützlichen Informationen aus den meistverkauften Büchern von Amazon abrufen. Die URL, die wir abrufen werden, ist:
https://www.amazon.in/gp/bestsellers/books/ref=zg_bs_pg_’+str(pageNo)+’?ie=UTF8&pg=’+str(pageNo)
Da wir auf alle Seiten zugreifen müssen, werden wir jede Seite in einer Schleife durchlaufen, um den erforderlichen Datensatz zu erhalten.
Um eine Verbindung zur URL herzustellen und den HTML-Inhalt abzurufen, ist Folgendes erforderlich,
Einige der wichtigen Tags, unter denen unsere wichtigen Daten gespeichert werden, sind,
Wenn Sie die angegebene Seite untersuchen, sehen Sie das übergeordnete Tag und die entsprechenden Elemente.
Wenn Sie ein bestimmtes Attribut prüfen möchten, gehen Sie zu jedem einzelnen und prüfen Sie es. Sie finden einige wichtige Attribute für den Autor, den Buchnamen, die Bewertung, den Preis und die Kundenbewertung.
In unserem Code werden wir verschachtelte if-else-Anweisungen verwenden, um zusätzliche Ergebnisse für die Autoren zu erhalten, die nicht bei amazon registriert sind.
no_pages = 2
def get_data(pageNo):
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0", "Accept-Encoding":"gzip, deflate", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "DNT":"1","Connection":"close", "Upgrade-Insecure-Requests":"1"}
r = requests.get('https://www.amazon.in/gp/bestsellers/books/ref=zg_bs_pg_'+str(pageNo)+'?ie=UTF8&pg='+str(pageNo), headers=headers)#, proxies=proxies)
content = r.content
soup = BeautifulSoup(content)
#print(soup)
alls = []
for d in soup.findAll('div', attrs={'class':'a-section a-spacing-none aok-relative'}):
#print(d)
name = d.find('span', attrs={'class':'zg-text-center-align'})
n = name.find_all('img', alt=True)
#print(n[0]['alt'])
author = d.find('a', attrs={'class':'a-size-small a-link-child'})
rating = d.find('span', attrs={'class':'a-icon-alt'})
users_rated = d.find('a', attrs={'class':'a-size-small a-link-normal'})
price = d.find('span', attrs={'class':'p13n-sc-price'})
all1=[]
if name is not None:
#print(n[0]['alt'])
all1.append(n[0]['alt'])
else:
all1.append("unknown-product")
if author is not None:
#print(author.text)
all1.append(author.text)
elif author is None:
author = d.find('span', attrs={'class':'a-size-small a-color-base'})
if author is not None:
all1.append(author.text)
else:
all1.append('0')
if rating is not None:
#print(rating.text)
all1.append(rating.text)
else:
all1.append('-1')
if users_rated is not None:
#print(price.text)
all1.append(users_rated.text)
else:
all1.append('0')
if price is not None:
#print(price.text)
all1.append(price.text)
else:
all1.append('0')
alls.append(all1)
return alls
Dieser hat folgende Funktionen,
for i in range(1, no_pages+1):
results.append(get_data(i))
flatten = lambda l: [item for sublist in l for item in sublist]
df = pd.DataFrame(flatten(results),columns=['Book Name','Author','Rating','Customers_Rated', 'Price'])
df.to_csv('amazon_products.csv', index=False, encoding='utf-8')
Wir laden nun die csv-Datei,
df = pd.read_csv("amazon_products.csv")
df.form
Die Form des Datenrahmens zeigt, dass die CSV-Datei 100 Zeilen und 5 Spalten enthält.
Schauen wir uns die 5 Zeilen des Datensatzes an,
df.head(61)
Wir werden nun einige Vorverarbeitungen an den Spalten "ratings", "customers_rated" und "price" vornehmen.
df['Bewertung'] = df['Bewertung'].apply(lambda x: x.split()[0])
df['Bewertung'] = pd.to_numeric(df['Bewertung'])
df["Preis"] = df["Preis"].str.replace('₹', '')
df["Preis"] = df["Preis"].str.replace(',', '')
df['Preis'] = df['Preis'].apply(lambda x: x.split('.')[0])
df['Preis'] = df['Preis'].astype(int)
df["Kunden_Bewertung"] = df["Kunden_Bewertung"].str.replace(',', '')
df['Kunden_Bewertung'] = pd.to_numeric(df['Kunden_Bewertung'], errors='ignore')
df.head()
Wenn wir einen Blick auf die Typen von Datenrahmen werfen, erhalten wir,
Die obige Ausgabe enthält einige unvollständige Informationen. Wir zählen zunächst die Anzahl der NaNs und lassen sie dann weg.
df.replace(str(0), np.nan, inplace=True)
df.replace(0, np.nan, inplace=True)
count_nan = len(df) - df.count()
zaehlen_nan
df = df.dropna()
Wir werden nun alle Autoren mit dem höchstpreisigen Buch kennenlernen. Wir werden uns mit den Top 20 von ihnen vertraut machen.
data = data.sort_values(['Bewertung'],axis=0, ascending=False)[:15]
Daten
Wir werden nun die am besten bewerteten Bücher und Autoren in Bezug auf die Kundenbewertung sehen. Wir werden die Autoren und Bücher mit weniger als 1000 Bewertungen herausfiltern, damit wir die bekanntesten Autoren erhalten.
data = df[df['Kunden_Bewertung'] > 1000]
data = data.sort_values(['Bewertung'],axis=0, ascending=False)[:15]
daten
Machen wir uns ein Bild von den am besten bewerteten Büchern,
p = figure(x_range=data.iloc[:,0], plot_width=800, plot_height=600, title="Top Rated Books with more than 1000 Customers Rating", toolbar_location=None, tools="")
p.vbar(x=data.iloc[:,0], top=data.iloc[:,2], width=0.9)
p.xgrid.grid_line_color = Keine
p.y_range.start = 0
p.xaxis.major_label_orientation = math.pi/2
show(p)
Je mehr Bewertungen, desto größer ist das Vertrauen der Kunden. Es wird also überzeugender und glaubwürdiger sein, wenn wir die Autoren und Bücher hinzufügen, die von den Kunden am besten bewertet wurden.
from bokeh.transform import factor_cmap
from bokeh.models importiere Legende
from bokeh.palettes importiere Dark2_5 als Palette
importiere itertools
from bokeh.palettes importiere d3
#colors enthält eine Liste von Farben, die in Plots verwendet werden können.
colors = itertools.cycle(palette)
palette = d3['Kategorie20'][20]
index_cmap = factor_cmap('Autor', palette=palette,
factors=data["Autor"])
p = figure(plot_width=700, plot_height=700, title = "Top-Autoren: Bewertung vs. bewertete Kunden")
p.scatter('Rating','Customers_Rated',source=data,fill_alpha=0.6, fill_color=index_cmap,size=20,legend='Author')
p.xaxis.axis_label = 'RATING'
p.yaxis.axis_label = 'KUNDEN BEWERTET'
p.legend.location = 'top_left'
anzeigen(p)
In diesem Artikel haben wir gesehen, was Web Scraping ist, indem wir einen sehr wichtigen Anwendungsfall der Extraktion von Daten aus Amazon genommen haben. Wir haben nicht nur Daten von verschiedenen Amazon-Seiten extrahiert, sondern die Daten auch mit verschiedenen Python-Bibliotheken visualisiert. Dieser Artikel war ein Artikel für Fortgeschrittene und könnte für Leute, die neu im Bereich Web Scraping und Datenvisualisierung sind, schwer zu verstehen sein. Für sie empfehle ich die Artikel des Starter Packs, die unter ProxyScrape. Web Scraping ist eine sehr nützliche Technik, die Ihrem Unternehmen einen Schub geben kann. Es gibt auch einige erstaunliche kostenpflichtige Tools auf dem Markt, aber warum sollten Sie diese bezahlen, wenn Sie Ihren eigenen Scraper programmieren können. Der Code, den wir oben geschrieben haben, funktioniert möglicherweise nicht für jede Webseite, da die Seitenstruktur unterschiedlich sein kann. Aber wenn Sie die obigen Konzepte verstanden haben, dann gibt es keine Hürden für Sie, jede Webseite zu scrapen, indem Sie den Code entsprechend ihrer Struktur modifizieren. Ich hoffe, dieser Artikel war für die Leser interessant. Das war schon alles. Wir sehen uns in den nächsten Artikeln!