Intelijen bisnis, penelitian, dan analisis hanyalah beberapa dari kemungkinan tak terbatas yang tersedia melalui web scraping. Entitas bisnis yang lengkap seperti Walmart menyediakan struktur yang sempurna bagi kita untuk mengumpulkan informasi yang diperlukan. Kami dapat dengan mudah mengikis data Walmart seperti nama, harga, dan info ulasan dari berbagai situs web mereka menggunakan berbagai teknik pengikisan.
Pada artikel ini kita akan membahas proses: cara mengikis data Walmart. Kita akan menggunakan request untuk mengirim permintaan HTTP dan lxml untuk mengurai dokumen HTML yang dikembalikan.
Dalam hal penggalian data produk di beberapa situs ritel, Python adalah salah satu opsi paling efektif yang tersedia. Berikut ini adalah cara mengintegrasikannya dengan mulus ke dalam proyek ekstraksi:
Menggunakan bahasa tersebut untuk proyek-proyek di bidang ritel tidak hanya menyederhanakan aspek teknis, tetapi juga meningkatkan efisiensi serta cakupan analisis, menjadikannya pilihan utama bagi para ahli yang ingin mendapatkan pengetahuan mendalam tentang pasar. Aspek-aspek ini mungkin sangat berguna ketika seseorang memutuskan untuk mengikis data Walmart.
Sekarang, mari kita mulai dengan membuat alat scraping web Walmart.
Untuk memulai, pastikan Python sudah terinstal di komputer Anda. Pustaka yang diperlukan dapat diunduh menggunakan pip:
pip install requests
pip install lxml
pip install urllib3
Sekarang mari kita mengimpor pustaka seperti:
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
Daftar URL produk untuk mengikis data Walmart dapat ditambahkan seperti ini.
product_urls = [
'link with https',
'link with https',
'link with https'
]
Ketika mengikis web Walmart, sangat penting untuk menampilkan header HTTP yang benar, terutama header User-Agent, untuk meniru peramban yang sebenarnya. Selain itu, sistem anti-bot situs ini juga bisa diakali dengan menggunakan server proxy yang berputar. Pada contoh di bawah ini, string User-Agent disajikan bersama dengan instruksi untuk menambahkan otorisasi server proxy berdasarkan alamat 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>',
]
Tajuk permintaan harus diatur sedemikian rupa sehingga menyamarkannya sebagai berasal dari peramban pengguna. Ini akan sangat membantu ketika mencoba mengikis data Walmart. Berikut ini contoh tampilannya:
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',
}
Langkah utama adalah membuat struktur yang akan menerima informasi produk.
product_details = []
Menghitung halaman URL bekerja dengan cara berikut: Untuk setiap halaman URL, permintaan GET dimulai dengan User-Agent dan proxy yang dipilih secara acak. Setelah respons HTML dikembalikan, respons tersebut diuraikan untuk mendapatkan detail produk termasuk nama, harga, dan ulasan. Detail yang relevan disimpan dalam struktur data kamus yang kemudian ditambahkan ke daftar yang telah dibuat sebelumnya.
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:
# Kirim permintaan HTTP GET ke 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}')
# Mengurai konten HTML menggunakan lxml
parser = html.fromstring(response.text)
# Ekstrak judul produk
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# Ekstrak harga produk
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# Ekstrak detail ulasan
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# Menyimpan detail yang diekstrak dalam kamus
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# Menambahkan detail produk ke daftar
product_details.append(product_detail)
Judul:
Harga:
Detail ulasan:
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)
Ketika melakukan web scraping Walmart, skrip lengkap Python akan terlihat seperti yang disediakan di bawah ini. Berikut ini juga ada beberapa komentar untuk memudahkan Anda memahami setiap bagian.
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()
# Daftar URL produk untuk mengikis data Walmart
product_urls = [
'link with https',
'link with https',
'link with https'
]
# String Pengguna-Agen yang diacak untuk anonimitas
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'
]
# Daftar proxy untuk rotasi IP
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
# Header untuk meniru permintaan browser
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',
}
# Inisialisasi daftar kosong untuk menyimpan detail produk
product_details = []
# Ulangi setiap URL produk
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:
# Kirim permintaan HTTP GET ke 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}')
# Mengurai konten HTML menggunakan lxml
parser = html.fromstring(response.text)
# Ekstrak judul produk
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# Ekstrak harga produk
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# Ekstrak detail ulasan
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# Menyimpan detail yang diekstrak dalam kamus
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# Menambahkan detail produk ke daftar
product_details.append(product_detail)
# Tulis data yang diekstrak ke file 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)
Bagi mereka yang menggunakan Python untuk berinteraksi dengan API pengikisan Walmart, sangat penting untuk mengembangkan metode yang kuat yang secara efektif mengikis harga Walmart dan hasil ulasan Walmart. API ini menyediakan saluran langsung ke data produk yang luas, memfasilitasi analisis waktu nyata tentang harga dan umpan balik pelanggan.
Dengan menggunakan strategi khusus ini, ketepatan dan cakupan informasi yang dikumpulkan menjadi lebih baik, sehingga perusahaan dapat beradaptasi dengan cepat terhadap perubahan pasar dan tren konsumen. Melalui penerapan strategis API Walmart di Python, perusahaan dapat mengoptimalkan proses pengumpulan data mereka, memastikan analisis pasar yang komprehensif dan pengambilan keputusan yang tepat.
Dalam tutorial ini, kami menjelaskan cara menggunakan pustaka Python untuk mengikis data Walmart dan menyimpannya ke dalam file CSV untuk dianalisis nanti. Skrip yang diberikan bersifat dasar, dan berfungsi sebagai titik awal yang dapat Anda modifikasi untuk meningkatkan efisiensi proses scraping. Perbaikan dapat mencakup menambahkan interval waktu acak antara permintaan untuk mensimulasikan penjelajahan manusia, menggunakan agen pengguna dan proksi untuk menutupi bot, dan menerapkan penanganan kesalahan tingkat lanjut untuk menangani gangguan atau kegagalan pengikisan.
Komentar: 0