以下是主流電商平臺(淘寶、京東、拼多多、1688、唯品會)商品詳情頁面的解析示例,包含核心字段提取方法和應對策略:
一、淘寶商品詳情解析
1. 頁面結構特點
- 動態(tài)渲染:部分數據通過 JS 異步加載(如 SKU 信息)
- 防爬機制:頻繁請求會觸發(fā)驗證碼
- 數據加密:部分價格信息使用字體加密
- 注冊賬號: [注冊獲取 API 數據](以下是主流電商平臺(淘寶、京東、拼多多、1688、唯品會)商品詳情頁面的解析示例,包含核心字段提取方法和應對策略:
一、淘寶商品詳情解析
1. 頁面結構特點
- 動態(tài)渲染:部分數據通過 JS 異步加載(如 SKU 信息)
- 防爬機制:頻繁請求會觸發(fā)驗證碼
- 數據加密:部分價格信息使用字體加密
- 注冊賬號: 注冊直接獲取 API 數據
2. 核心字段解析
import requests
from bs4 import BeautifulSoup
import re
def parse_taobao_item(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': 'https://www.taobao.com'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取商品標題
title = soup.select_one('h1[data-spm="1000983"]').text.strip()
# 提取價格(處理加密字體)
price_text = soup.select_one('.tm-price').text
price = re.search(r'\d+.\d+', price_text).group(0)
# 提取SKU信息(動態(tài)加載,需分析AJAX請求)
sku_info = []
sku_script = soup.find('script', string=re.compile('skuMap'))
if sku_script:
sku_data = re.search(r'skuMap\s*:\s*({.*?})', sku_script.string)
if sku_data:
sku_json = json.loads(sku_data.group(1))
for sku_id, sku in sku_json.items():
sku_info.append({
'properties': sku['name'],
'price': sku['price'],
'stock': sku['stock']
})
# 提取店鋪信息
shop_name = soup.select_one('.slogo-shopname').text.strip()
return {
'title': title,
'price': float(price),
'sku_info': sku_info,
'shop_name': shop_name
}
二、京東商品詳情解析
1. 頁面結構特點
- API 接口清晰:大部分數據通過 JSON 接口返回
- 價格保護:價格信息可能需要登錄才能獲取
- 動態(tài)評論:評論數據通過分頁 API 加載
2. 核心字段解析
import requests
import json
def parse_jd_item(item_id):
# 獲取商品基本信息
base_url = f"https://item.jd.com/{item_id}.html"
headers = {
'User-Agent': 'Mozilla/5.0',
'Referer': base_url
}
# 獲取商品標題和價格(需分析頁面結構)
response = requests.get(base_url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.select_one('.sku-name').text.strip()
# 通過價格API獲取價格
price_url = f"https://p.3.cn/prices/mgets?skuIds=J_{item_id}"
price_data = requests.get(price_url, headers=headers).json()
price = float(price_data[0]['p'])
# 獲取SKU信息
sku_url = f"https://item-soa.jd.com/getWareBusiness?skuId={item_id}"
sku_data = requests.get(sku_url, headers=headers).json()
sku_info = []
if 'wareSku' in sku_data and 'skus' in sku_data['wareSku']:
for sku in sku_data['wareSku']['skus']:
sku_info.append({
'sku_id': sku['skuId'],
'properties': sku['name'],
'price': float(sku['price']),
'stock': sku['stockState']
})
return {
'title': title,
'price': price,
'sku_info': sku_info
}
三、拼多多商品詳情解析
1. 頁面結構特點
- 移動端優(yōu)先:PC 端頁面簡化,數據主要來自移動端 API
- 加密請求:請求參數和響應數據可能經過加密
- 反爬嚴格:頻繁請求會觸發(fā)滑塊驗證
2. 核心字段解析
import requests
import json
import time
import random
def parse_pinduoduo_item(item_id):
# 拼多多移動端API(示例,實際需分析最新接口)
url = "https://apiv3.pinduoduo.com/api/item/get"
# 構建請求參數(包含加密信息)
params = {
'item_id': item_id,
'pdduid': int(time.time() * 1000), # 模擬用戶ID
'_': int(time.time() * 1000), # 時間戳
'random': random.random() # 隨機數
}
# 添加必要的請求頭
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit',
'Referer': f'https://mobile.yangkeduo.com/goods.html?goods_id={item_id}',
'Origin': 'https://mobile.yangkeduo.com',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json, text/plain, */*'
}
# 發(fā)送請求
response = requests.get(url, params=params, headers=headers)
data = response.json()
# 解析數據
item = data.get('item', {})
return {
'title': item.get('goods_name'),
'price': item.get('min_group_price') / 100, # 拼多多價格單位為分
'original_price': item.get('market_price') / 100,
'sales': item.get('sales_tip'),
'images': item.get('gallery'),
'description': item.get('goods_desc')
}
四、1688 商品詳情解析
1. 頁面結構特點
- 企業(yè)級數據:包含更多供應商信息和批發(fā)屬性
- 多規(guī)格商品:SKU 結構復雜,支持混批
- API 權限:部分數據需要授權訪問
2. 核心字段解析
import requests
from bs4 import BeautifulSoup
import json
def parse_1688_item(item_id):
# 1688商品詳情頁
url = f"https://detail.1688.com/offer/{item_id}.html"
headers = {
'User-Agent': 'Mozilla/5.0',
'Referer': 'https://www.1688.com'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取商品標題
title = soup.select_one('.d-title').text.strip()
# 提取價格范圍
price_range = soup.select_one('.price-now').text.strip()
# 提取供應商信息
company_name = soup.select_one('.company-name').text.strip()
location = soup.select_one('.location').text.strip()
# 提取SKU信息(動態(tài)加載)
sku_info = []
sku_script = soup.find('script', string=re.compile('skuMap'))
if sku_script:
sku_data = re.search(r'skuMap\s*:\s*({.*?})', sku_script.string)
if sku_data:
sku_json = json.loads(sku_data.group(1))
for sku_id, sku in sku_json.items():
sku_info.append({
'properties': sku['name'],
'price': sku['price'],
'min_order': sku['minOrderQuantity'],
'available_quantity': sku['availableQuantity']
})
return {
'title': title,
'price_range': price_range,
'company_name': company_name,
'location': location,
'sku_info': sku_info
}
五、唯品會商品詳情解析
1. 頁面結構特點
- 品牌特賣:強調品牌和折扣力度
- 限時活動:價格和庫存時效性強
- 移動端為主:PC 端功能簡化
2. 核心字段解析
import requests
import json
import re
def parse_vip_item(item_id):
# 唯品會商品詳情API(示例,實際需分析最新接口)
url = f"https://m.vip.com/product-{item_id}.html"
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit',
'Referer': 'https://m.vip.com/'
}
# 獲取頁面內容
response = requests.get(url, headers=headers)
html = response.text
# 提取商品信息(JSON數據嵌入在頁面script中)
item_data = None
match = re.search(r'window.productInfo\s*=\s*({.*?});', html)
if match:
item_data = json.loads(match.group(1))
if not item_data:
return None
# 解析核心數據
product = item_data.get('product', {})
return {
'title': product.get('name'),
'brand': product.get('brandName'),
'original_price': product.get('marketPrice'),
'current_price': product.get('salePrice'),
'discount': product.get('discount'),
'images': [img.get('url') for img in product.get('detailImages', [])],
'color_options': [color.get('name') for color in product.get('colors', [])]
}
六、通用解析策略與注意事項
- 動態(tài)內容處理:
- 使用 Selenium/Puppeteer 渲染 JavaScript 內容
- 注冊直接獲取 API 數據
- 反爬應對:
- 隨機 User-Agent 輪換
- 設置合理請求間隔(建議≥1 秒)
- 使用 IP 代理池(Luminati、Oxylabs)
- 數據驗證:
- 使用正則表達式驗證價格、ID 等字段
- 檢查數據完整性,處理空值情況
通過分析各平臺的頁面結構特點和數據加載方式,結合適當的解析工具和反爬策略,可高效獲取商品詳情數據。建議針對具體平臺定期更新解析邏輯,以應對頁面結構變化。