Python 抓取 Walmart 商品評論數據的完整指南
在電商數據分析中,獲取用戶評論是一個關鍵環節。Walmart 作為全球知名的零售平台,其評論數據可以用於產品研究、市場分析以及用戶情緒分析等。本文將介紹 兩種有效的方法 來獲取 Walmart 商品評論數據:
傳統的 Web 爬取方式:使用
requests
和BeautifulSoup
解析 Walmart 的網頁數據。LuckData API 方式:利用 LuckData API 獲取結構化的 Walmart 評論數據,更加穩定、高效。
此外,本文還將分享數據抓取過程中的關鍵知識,包括反爬機制應對策略、數據存儲等內容,以幫助你更好地處理和分析這些評論數據。
1. 透過 Web 爬蟲抓取 Walmart 評論數據
最基本的方法是 直接爬取 Walmart 商品頁面,提取其中的評論數據。這種方法適用於所有網站,但需要應對 反爬機制。
1.1 環境準備
在開始之前,確保你的 Python 環境已安裝以下庫:
pip install requests beautifulsoup4
1.2 爬取 Walmart 商品評論
import requestsfrom bs4 import BeautifulSoup
# Walmart 商品評論頁面的 URL(需要手動獲取)
url = 'https://www.walmart.com/product/reviews/your-product-id'
# 設置請求標頭,模擬瀏覽器訪問
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
response = requests.get(url, headers=headers)
# 檢查請求是否成功
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有評論區域
reviews = soup.find_all('div', {'class': 'review'})
for review in reviews:
comment = review.find('div', {'class': 'review-text'}).text.strip()
rating = review.find('span', {'class': 'stars-container'}).text.strip()
print(f'評分: {rating}')
print(f'評論: {comment}')
print('-' * 40)
else:
print(f"請求失敗,狀態碼: {response.status_code}")
1.3 反爬機制應對策略
Walmart 可能會有反爬措施,導致請求被阻擋。可採取以下方式提高爬取成功率:
更改 User-Agent:模擬不同瀏覽器,降低被封鎖的可能性。
使用代理 IP:避免同一 IP 過於頻繁訪問被 Walmart 服務器屏蔽。
使用 Selenium 爬取:如果評論數據通過 JavaScript 加載,可使用
Selenium
獲取動態內容。
2. 透過 LuckData API 獲取 Walmart 評論數據
如果不想自己解析 HTML,並希望獲取更穩定、可靠的評論數據,LuckData API 提供了一種更高效的方式來直接查詢 Walmart 商品評論。
2.1 LuckData Walmart API 簡介
LuckData 提供了 Walmart API,允許開發者訪問 Walmart 的產品目錄、商品詳情以及評論數據,可直接集成到應用程式中,無需手動爬取網頁。
2.2 LuckData API 價格方案
LuckData API 根據請求速率與數據量提供 四種價格方案,讓用戶可以靈活選擇:
方案 | 月費 | 積分數量 | 最大請求速率 |
---|---|---|---|
免費版 | $0 | 100/月 | 1 請求/秒 |
Basic 版 | $87 | 58,000/月 | 5 請求/秒 |
Pro 版 | $299 | 230,000/月 | 10 請求/秒 |
Ultra 版 | $825 | 750,000/月 | 15 請求/秒 |
所有版本 數據完整性相同,僅影響請求數量與速率。
2.3 API 獲取評論數據示例
import requests# 設置 LuckData API Key
api_key = 'your-luckdata-key' # 替換為你的 LuckData API Key
# Walmart 商品 URL 和 SKU ID
product_url = 'https://www.walmart.com/ip/example-product' # 替換為實際 Walmart 商品鏈接
sku_id = '123456789' # 替換為實際 SKU ID
# 設置請求頭
headers = {
'X-Luckdata-Api-Key': api_key
}
# API 請求 URL
api_url = f'https://luckdata.io/api/walmart-API/get_v1me?url={product_url}&sku={sku_id}&page=1'
# 發送請求
response = requests.get(api_url, headers=headers)
# 解析返回的 JSON 數據
if response.status_code == 200:
data = response.json()
print("獲取的數據:", data)
if 'reviews' in data:
for review in data['reviews']:
print(f"用戶: {review.get('user', '匿名')}")
print(f"評分: {review.get('rating', 'N/A')}")
print(f"評論: {review.get('comment', '無評論')}")
print('-' * 40)
else:
print("未找到評論數據")
else:
print(f"請求失敗,狀態碼: {response.status_code}, 錯誤信息: {response.text}")
2.4 為何選擇 LuckData API?
LuckData API 相較於傳統爬蟲方式,具有以下優勢:
無需應對反爬機制,請求穩定,不受網站變動影響。
返回結構化 JSON 數據,直接可用,省去解析 HTML 的麻煩。
提供多平台 API,支持 Amazon、Google、TikTok 等數千個電商平台,擴展性強。
無需管理基礎設施,即時獲取數據,企業級解決方案支持。
3. 抓取數據的進階處理
3.1 存儲數據
import csv# 將評論數據存入 CSV 文件
def save_to_csv(reviews, filename="walmart_reviews.csv"):
with open(filename, mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(["用戶", "評分", "評論"])
for review in reviews:
writer.writerow([review["user"], review["rating"], review["comment"]])
3.2 文本清洗
import redef clean_text(text):
text = re.sub(r'<.*?>', '', text) # 去除 HTML 標籤
text = text.strip()
return text
4. 總結
本文介紹了 兩種有效方法 來抓取 Walmart 商品評論數據:
Web 爬蟲 適用於個人研究,但需要處理反爬機制。
LuckData API 提供 穩定、快速、無需解析 HTML 的數據接口,適合企業級應用。
如果你希望更快速、穩定地獲取評論數據,LuckData API 是最佳選擇!