引言
唯品会是中国领先的在线特卖电商平台,提供品牌折扣商品。本文以爬取唯品会泳衣商品数据为例,演示从接口分析、数据抓取到可视化展示的全流程。
数据来源分析
1. 明确需求
- 采集网站: https://category.vip.com/
- 目标数据: 商品信息(标题、价格、品牌等)
2. 抓包分析
使用浏览器开发者工具(F12 / Network)进行分析:
- 刷新网页触发数据加载。
- 搜索关键字定位数据包。
- 发现数据分批次返回(如前 50 条、中 50 条、后 20 条),需通过分页或 ID 列表批量获取。
- 关键参数包括
keyword(关键词)、pageOffset(页码)、batchSize(批次大小)等。
代码实现步骤
环境准备
确保安装必要的库:
pip install requests pandas pyecharts
发送请求与解析
定义请求头模拟浏览器行为,设置 Referer 防止防盗链。通过 API 获取商品 ID 列表,再分批请求详细信息。
import requests
import csv
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Pie
# 请求头配置
headers = {
'Referer': 'https://category.vip.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
# 第一步:获取商品 ID 列表
url = 'https://mapi.vip.com/vips-mobile/rest/shopping/pc/search/product/rank'
data = {
'app_name': 'shop_pc',
'app_version': '4.0',
'warehouse': 'VIP_HZ',
'fdc_area_id': '104103101',
'client': ,
: ,
: ,
: ,
: ,
: ,
: ,
: ,
: ,
: ,
}
response = requests.get(url=url, params=data, headers=headers)
products = [i[] i response.json()[][]]
product_id_list = [
.join(products[:]),
.join(products[:]),
.join(products[:])
]
(, mode=, encoding=, newline=) f:
fieldnames = [, , , , , , ]
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
product_ids product_id_list:
link =
params = {
: ,
: ,
: ,
: ,
: ,
: ,
: ,
: ,
: product_ids,
: ,
: ,
: ,
}
json_data = requests.get(url=link, params=params, headers=headers).json()
item json_data[][]:
attrs = .join([j[] j item.get(, [])])
row = {
: item[],
: item[],
: item[][],
: item[][],
: item[][],
: attrs,
: ,
}
writer.writerow(row)
(row)


