pl
English
Español
中國人
Tiếng Việt
Deutsch
Українська
Português
Français
भारतीय
Türkçe
한국인
Italiano
Gaeilge
اردو
Indonesia Analityka biznesowa, badania i analizy to tylko kilka z nieskończonych możliwości dostępnych dzięki skrobaniu stron internetowych. W pełni rozwinięty podmiot biznesowy, taki jak Walmart, zapewnia nam idealną strukturę do zbierania niezbędnych informacji. Możemy łatwo skrobać dane Walmart, takie jak nazwa, cena i informacje o recenzjach z ich wielu stron internetowych przy użyciu różnych technik skrobania.
W tym artykule omówimy proces: jak skrobać dane Walmart. Będziemy używać żądań do wysyłania żądań HTTP i lxml do analizowania zwróconych dokumentów HTML.
Jeśli chodzi o skrobanie danych produktów w wielu witrynach detalicznych, Python jest jedną z najbardziej efektywnych dostępnych opcji. Oto jak płynnie integruje się z projektami ekstrakcji:
Wykorzystanie takiego języka w projektach w branży detalicznej nie tylko upraszcza aspekt techniczny, ale także zwiększa wydajność i zakres analizy, co czyni go najlepszym wyborem dla ekspertów dążących do zdobycia dogłębnej wiedzy o rynku. Aspekty te mogą być szczególnie przydatne, gdy zdecydujemy się na skrobanie danych Walmart.
Teraz zacznijmy od zbudowania narzędzia do skrobania stron internetowych Walmart.
Aby rozpocząć, upewnij się, że Python jest zainstalowany na twoim komputerze. Wymagane biblioteki można pobrać za pomocą pip:
pip install requests
pip install lxml
pip install urllib3
Teraz zaimportujmy takie biblioteki jak:
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
Listę adresów URL produktów do zeskrobania danych Walmart można dodać w następujący sposób.
product_urls = [
'link with https',
'link with https',
'link with https'
]
Podczas skrobania stron internetowych Walmart, kluczowe jest przedstawienie prawidłowych nagłówków HTTP, zwłaszcza nagłówka User-Agent, w celu naśladowania rzeczywistej przeglądarki. Co więcej, systemy antybotowe witryny można również obejść za pomocą rotacyjnych serwerów proxy. W poniższym przykładzie przedstawiono ciągi User-Agent wraz z instrukcjami dodawania autoryzacji serwera proxy według adresu IP.
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>',
]
Nagłówki żądań powinny być ustawione w sposób ukrywający je jako pochodzące z przeglądarki użytkownika. Będzie to bardzo pomocne podczas próby zeskrobania danych Walmart. Oto przykład, jak to będzie wyglądać:
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',
}
Podstawowym krokiem jest stworzenie struktury, która będzie akceptować informacje o produkcie.
product_details = []
Wyliczanie stron URL działa w następujący sposób: Dla każdej strony URL inicjowane jest żądanie GET z losowo wybranym User-Agent i proxy. Po zwróceniu odpowiedzi HTML jest ona analizowana pod kątem szczegółów produktu, w tym nazwy, ceny i recenzji. Odpowiednie szczegóły są zapisywane w słownikowej strukturze danych, która jest później dodawana do wcześniej utworzonej listy.
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:
# Wysłanie żądania HTTP GET do adresu 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}')
# Parsowanie zawartości HTML przy użyciu lxml
parser = html.fromstring(response.text)
# Wyodrębnij tytuł produktu
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# Wyodrębnij cenę produktu
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# Szczegóły przeglądu wyciągu
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# Przechowywanie wyodrębnionych szczegółów w słowniku
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# Dołącz szczegóły produktu do listy
product_details.append(product_detail)
Tytuł:
Cena:
Szczegóły recenzji:
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)
Gdy Web Scraping Walmart, kompletny skrypt Pythona będzie wyglądał tak, jak podano poniżej. Poniżej znajdują się również komentarze ułatwiające zrozumienie każdej sekcji.
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()
# Lista adresów URL produktów do zeskrobania danych Walmart
product_urls = [
'link with https',
'link with https',
'link with https'
]
# Losowe ciągi User-Agent zapewniające anonimowość
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'
]
# Lista proxy dla rotacji adresów IP
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
# Nagłówki naśladujące żądania przeglądarki
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',
}
# Zainicjuj pustą listę do przechowywania szczegółów produktu
product_details = []
# Pętla przez każdy adres URL produktu
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:
# Wysłanie żądania HTTP GET do adresu 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}')
# Parsowanie zawartości HTML przy użyciu lxml
parser = html.fromstring(response.text)
# Wyodrębnij tytuł produktu
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# Wyodrębnij cenę produktu
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# Szczegóły przeglądu wyciągu
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# Przechowywanie wyodrębnionych szczegółów w słowniku
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# Dołącz szczegóły produktu do listy
product_details.append(product_detail)
# Zapis wyodrębnionych danych do pliku CSV
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)
Dla tych, którzy używają Pythona do łączenia się z API Walmart, kluczowe jest opracowanie solidnych metod, które skutecznie skrobią ceny Walmart i wyniki recenzji Walmart. Ten interfejs API zapewnia bezpośredni dostęp do obszernych danych o produktach, ułatwiając analizę cen i opinii klientów w czasie rzeczywistym.
Zastosowanie tych konkretnych strategii zwiększa precyzję i zakres gromadzonych informacji, umożliwiając firmom szybkie dostosowanie się do zmian rynkowych i trendów konsumenckich. Dzięki strategicznemu zastosowaniu Walmart API w Pythonie, firmy mogą zoptymalizować swoje procesy gromadzenia danych, zapewniając kompleksową analizę rynku i świadome podejmowanie decyzji.
W tym samouczku wyjaśniliśmy, jak używać bibliotek Pythona do skrobania danych Walmart i zapisywania ich w pliku CSV do późniejszej analizy. Podany skrypt jest podstawowy i służy jako punkt wyjścia, który można zmodyfikować w celu poprawy wydajności procesu skrobania. Ulepszenia mogą obejmować dodanie losowych interwałów czasowych między żądaniami w celu symulacji przeglądania przez ludzi, wykorzystanie agentów użytkownika i serwerów proxy do maskowania bota oraz wdrożenie zaawansowanej obsługi błędów w celu radzenia sobie z przerwami lub awariami skrobania.
Komentarze: 0