Business Intelligence, Forschung und Analyse sind nur einige der endlosen Möglichkeiten, die sich durch Web Scraping ergeben. Ein vollwertiges Unternehmen wie Walmart bietet uns eine perfekte Struktur, um die erforderlichen Informationen zu sammeln. Wir können mit Hilfe verschiedener Scraping-Techniken ganz einfach Walmart-Daten wie Name, Preis und Bewertungsinformationen von den zahlreichen Websites abrufen.
In diesem Artikel werden wir den Prozess des Scrappens von Walmart-Daten erläutern. Wir werden requests zum Senden von HTTP-Anfragen und lxml zum Parsen der zurückgegebenen HTML-Dokumente verwenden.
Wenn es darum geht, Produktdaten auf mehreren Einzelhandels-Websites zu erfassen, ist Python eine der effektivsten Optionen. Hier erfahren Sie, wie es sich nahtlos in Extraktionsprojekte integrieren lässt:
Die Verwendung einer solchen Sprache für Projekte im Einzelhandel vereinfacht nicht nur den technischen Aspekt, sondern erhöht auch die Effizienz und den Umfang der Analyse, was sie zur ersten Wahl für Experten macht, die sich ein tiefes Wissen über den Markt aneignen wollen. Diese Aspekte können besonders nützlich sein, wenn man sich für das Scrapen von Walmart-Daten entscheidet.
Beginnen wir nun mit dem Aufbau eines Walmart Web Scraping Tools.
Stellen Sie zu Beginn sicher, dass Python auf Ihrem Computer installiert ist. Die erforderlichen Bibliotheken können mit pip heruntergeladen werden:
pip install requests
pip install lxml
pip install urllib3
Jetzt importieren wir solche Bibliotheken wie:
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
Eine Liste von Produkt-URLs zum Abrufen von Walmart-Daten kann wie folgt hinzugefügt werden.
product_urls = [
'link with https',
'link with https',
'link with https'
]
Beim Web Scraping von Walmart ist es wichtig, die richtigen HTTP-Header zu verwenden, insbesondere den User-Agent-Header, um einen echten Browser zu imitieren. Außerdem können die Anti-Bot-Systeme der Website auch durch die Verwendung rotierender Proxy-Server umgangen werden. Im folgenden Beispiel werden die User-Agent-Strings zusammen mit Anweisungen zum Hinzufügen der Proxy-Server-Autorisierung nach IP-Adresse dargestellt.
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
Die Header der Anfragen sollten so gesetzt werden, dass sie als vom Browser des Nutzers stammend getarnt sind. Das ist sehr hilfreich, wenn Sie versuchen, Walmart-Daten abzugreifen. Hier ist ein Beispiel, wie es aussehen würde:
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'dnt': '1',
'priority': 'u=0, i',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
}
Der erste Schritt besteht darin, eine Struktur zu erstellen, die Produktdaten aufnehmen kann.
product_details = []
Das Aufzählen von URL-Seiten funktioniert folgendermaßen: Für jede URL-Seite wird eine GET-Anfrage mit einem zufällig ausgewählten User-Agent und einem Proxy gestartet. Nachdem eine HTML-Antwort zurückgegeben wurde, wird sie auf die Produktdetails einschließlich des Namens, des Preises und der Bewertungen geparst. Die relevanten Details werden in der Wörterbuchdatenstruktur gespeichert, die später der zuvor erstellten Liste hinzugefügt wird.
for url in product_urls:
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': f'http://{random.choice(proxy)}',
'https': f'http://{random.choice(proxy)}',
}
try:
# Senden Sie eine HTTP-GET-Anfrage an die URL
response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
print(response.status_code)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f'Error fetching data: {e}')
# Parsen des HTML-Inhalts mit lxml
parser = html.fromstring(response.text)
# Produkttitel extrahieren
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# Produktpreis extrahieren
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# Auszug aus der Überprüfung
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# Extrahierte Details in einem Wörterbuch speichern
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# Anhängen von Produktdetails an die Liste
product_details.append(product_detail)
Titel:
Preis:
Überprüfung Detail:
with open('walmart_products.csv', 'w', newline='') as csvfile:
fieldnames = ['title', 'price', 'review_details']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for product_detail in product_details:
writer.writerow(product_detail)
Beim Web Scraping von Walmart wird das komplette Python-Skript wie unten dargestellt aussehen. Hier finden Sie auch einige Kommentare, die Ihnen das Verständnis der einzelnen Abschnitte erleichtern sollen.
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()
# Liste der Produkt-URLs zum Abrufen von Walmart-Daten
product_urls = [
'link with https',
'link with https',
'link with https'
]
# Zufallsgenerierte User-Agent-Strings für Anonymität
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
# Proxy-Liste für IP-Rotation
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
# Kopfzeilen zur Nachahmung von Browseranfragen
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'dnt': '1',
'priority': 'u=0, i',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
}
# Initialisierung einer leeren Liste zum Speichern von Produktdaten
product_details = []
# Schleife durch jede Produkt-URL
for url in product_urls:
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': f'http://{random.choice(proxy)}',
'https': f'http://{random.choice(proxy)}',
}
try:
# Senden Sie eine HTTP-GET-Anfrage an die URL
response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
print(response.status_code)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f'Error fetching data: {e}')
# Parsen des HTML-Inhalts mit lxml
parser = html.fromstring(response.text)
# Produkttitel extrahieren
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# Produktpreis extrahieren
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# Auszug aus der Überprüfung
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# Extrahierte Details in einem Wörterbuch speichern
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# Anhängen von Produktdetails an die Liste
product_details.append(product_detail)
# Schreiben der extrahierten Daten in eine CSV-Datei
with open('walmart_products.csv', 'w', newline='') as csvfile:
fieldnames = ['title', 'price', 'review_details']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for product_detail in product_details:
writer.writerow(product_detail)
Für diejenigen, die Python als Schnittstelle zur Walmart Scraping-API verwenden, ist es wichtig, robuste Methoden zu entwickeln, die effektiv Walmart-Preise und Walmart-Bewertungsergebnisse scrapen. Diese API bietet eine direkte Pipeline zu umfangreichen Produktdaten, die Echtzeit-Analysen zu Preisen und Kundenfeedback ermöglichen.
Die Anwendung dieser spezifischen Strategien verbessert die Präzision und den Umfang der gesammelten Informationen und ermöglicht es Unternehmen, sich schnell an Marktveränderungen und Verbrauchertrends anzupassen. Durch den strategischen Einsatz der Walmart-API in Python können Unternehmen ihre Datenerfassungsprozesse optimieren und so eine umfassende Marktanalyse und fundierte Entscheidungsfindung gewährleisten.
In diesem Tutorial haben wir erklärt, wie man die Python-Bibliotheken verwendet, um Walmart-Daten zu scrapen und sie in einer CSV-Datei zur späteren Analyse zu speichern. Das angegebene Skript ist einfach und dient als Ausgangspunkt, den Sie ändern können, um die Effizienz des Scraping-Prozesses zu verbessern. Zu den Verbesserungen gehören z. B. das Hinzufügen von zufälligen Zeitintervallen zwischen den Anfragen, um menschliches Browsing zu simulieren, die Verwendung von Benutzer-Agenten und Proxys, um den Bot zu maskieren, und die Implementierung einer erweiterten Fehlerbehandlung, um Unterbrechungen oder Fehler beim Scraping zu bewältigen.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bemerkungen: 0