Trí tuệ kinh doanh, nghiên cứu và phân tích chỉ là một vài trong vô số khả năng được mở ra nhờ web scraping. Một thực thể kinh doanh hoàn chỉnh như Walmart cung cấp một cấu trúc hoàn hảo để chúng ta thu thập thông tin cần thiết. Chúng ta có thể dễ dàng scrape dữ liệu Walmart như tên, giá và thông tin đánh giá từ hàng loạt website của họ bằng nhiều kỹ thuật scraping khác nhau.
Trong bài viết này, chúng ta sẽ đi sâu vào quá trình: cách scrape dữ liệu Walmart. Chúng ta sẽ sử dụng requests để gửi các HTTP request và lxml để phân tích cú pháp các tài liệu HTML trả về.
Khi nói đến việc scrape dữ liệu sản phẩm trên nhiều trang bán lẻ, Python là một trong những lựa chọn hiệu quả nhất hiện có. Đây là cách nó tích hợp một cách liền mạch vào các dự án trích xuất:
Sử dụng ngôn ngữ này cho các dự án bán lẻ không chỉ đơn giản hóa khía cạnh kỹ thuật mà còn tăng hiệu quả cũng như phạm vi phân tích, khiến nó trở thành lựa chọn hàng đầu cho các chuyên gia muốn hiểu sâu về thị trường. Những khía cạnh này có thể đặc biệt hữu ích khi ai đó quyết định scrape dữ liệu Walmart.
Bây giờ, hãy bắt đầu xây dựng công cụ web scraping cho Walmart.
Trước hết, hãy đảm bảo rằng Python đã được cài đặt trên máy tính của bạn. Các thư viện cần thiết có thể được tải xuống bằng pip:
pip install requests
pip install lxml
pip install urllib3
Bây giờ hãy import các thư viện sau:
import requests
from lxml import html
import csv
import random
import urllib3
import ssl
Danh sách các URL sản phẩm để scrape dữ liệu Walmart có thể được thêm như sau.
product_urls = [
'link with https',
'link with https',
'link with https'
]
Khi web scraping Walmart, việc thiết lập đúng các HTTP header, đặc biệt là header User-Agent, là rất quan trọng để giả lập một trình duyệt thực. Hơn nữa, hệ thống chống bot của trang web cũng có thể bị vượt qua bằng cách sử dụng các proxy xoay vòng. Trong ví dụ dưới đây, các chuỗi User-Agent được trình bày cùng với hướng dẫn thêm ủy quyền proxy theo địa chỉ 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>',
]
Các header của request nên được thiết lập sao cho chúng trông như đến từ trình duyệt của người dùng. Điều này sẽ rất hữu ích khi cố gắng scrape dữ liệu Walmart. Dưới đây là một ví dụ về cách nó sẽ trông như thế nào:
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',
}
Bước đầu tiên là tạo ra một cấu trúc để lưu trữ thông tin sản phẩm.
product_details = []
Liệt kê các trang URL hoạt động theo cách sau: Với mỗi trang URL, một yêu cầu GET được khởi tạo với một User-Agent và một proxy được chọn ngẫu nhiên. Sau khi nhận được phản hồi HTML, nó được phân tích để lấy các chi tiết sản phẩm bao gồm tên, giá và đánh giá. Các chi tiết liên quan được lưu vào cấu trúc dữ liệu từ điển và sau đó được thêm vào danh sách đã tạo trước đó.
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:
# Gửi HTTP Nhận yêu cầu đến 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}')
# Phân tích nội dung HTML bằng LXML
parser = html.fromstring(response.text)
# Trích xuất tiêu đề sản phẩm
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# Trích xuất giá sản phẩm
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# Trích xuất chi tiết đánh giá
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# Lưu trữ chi tiết chi tiết trong một từ điển
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# Phụ lục chi tiết sản phẩm vào danh sách
product_details.append(product_detail)
Tiêu đề:
Giá:
Chi tiết đánh giá:
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)
Khi web scraping Walmart, mã Python hoàn chỉnh sẽ trông giống như đoạn được cung cấp bên dưới. Ở đây cũng có một số chú thích để giúp bạn dễ dàng hiểu từng phần.
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()
# List of product URLs to scrape Walmart data
product_urls = [
'link with https',
'link with https',
'link with https'
]
# Ngẫu nhiên chuỗi tác nhân người dùng để ẩn danh
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'
]
# Danh sách proxy cho xoay IP
proxy = [
'<ip>:<port>',
'<ip>:<port>',
'<ip>:<port>',
]
# Tiêu đề cho các yêu cầu của trình duyệt bắt chước
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',
}
# Khởi tạo một danh sách trống để lưu trữ chi tiết sản phẩm
product_details = []
# Vòng lặp qua từng URL sản phẩm
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:
# Gửi HTTP Nhận yêu cầu đến 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}')
# Phân tích nội dung HTML bằng LXML
parser = html.fromstring(response.text)
# Trích xuất tiêu đề sản phẩm
title = ''.join(parser.xpath('//h1[@id="main-title"]/text()'))
# Trích xuất giá sản phẩm
price = ''.join(parser.xpath('//span[@itemprop="price"]/text()'))
# Trích xuất chi tiết đánh giá
review_details = ''.join(parser.xpath('//div[@data-testid="reviews-and-ratings"]/div/span[@class="w_iUH7"]/text()'))
# Lưu trữ chi tiết chi tiết trong một từ điển
product_detail = {
'title': title,
'price': price,
'review_details': review_details
}
# Phụ lục chi tiết sản phẩm vào danh sách
product_details.append(product_detail)
# Viết dữ liệu được trích xuất vào tệp 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)
Đối với những người sử dụng Python để giao tiếp với API scraping của Walmart, việc phát triển các phương pháp mạnh mẽ để scrape hiệu quả giá và kết quả đánh giá của Walmart là rất quan trọng. API này cung cấp một kênh trực tiếp đến dữ liệu sản phẩm phong phú, giúp phân tích thời gian thực về giá cả và phản hồi của khách hàng.
Áp dụng những chiến lược cụ thể này sẽ nâng cao độ chính xác và phạm vi của thông tin thu thập được, cho phép các doanh nghiệp thích ứng nhanh chóng với những thay đổi của thị trường và xu hướng tiêu dùng. Thông qua việc áp dụng chiến lược API của Walmart trong Python, các công ty có thể tối ưu hóa quy trình thu thập dữ liệu, đảm bảo phân tích thị trường toàn diện và ra quyết định sáng suốt.
Trong hướng dẫn này, chúng tôi đã giải thích cách sử dụng các thư viện Python để scrape dữ liệu Walmart và lưu chúng vào một tệp CSV để phân tích sau. Đoạn mã được cung cấp ở mức cơ bản và đóng vai trò như một điểm khởi đầu mà bạn có thể chỉnh sửa để cải thiện hiệu quả của quá trình scraping. Các cải tiến có thể bao gồm việc thêm khoảng thời gian ngẫu nhiên giữa các request để mô phỏng duyệt web của con người, sử dụng user-agent và proxy để che dấu bot, và triển khai xử lý lỗi nâng cao để đối phó với gián đoạn hoặc thất bại trong quá trình scraping.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bình luận: 0