使用 Selenium 爬取京东手机销量与评分数据
2026-01-08 16:50:35
  • 0
  • 0
  • 0

在电商数据分析场景中,京东作为头部电商平台,其手机品类的销量、评分数据是洞察市场趋势、分析用户偏好的核心依据。相较于静态网页爬取,京东采用动态渲染技术加载商品数据,传统的 Requests+BeautifulSoup 组合难以获取完整信息,而 Selenium 凭借模拟浏览器行为的特性,能完美解决动态数据爬取问题。本文将详细讲解如何基于 Selenium 实现京东手机销量与评分数据的爬取,并完成数据清洗与初步分析。

一、技术选型与环境准备

1. 核心技术栈

Selenium:模拟 Chrome 浏览器操作,加载动态页面并定位元素;

ChromeDriver:Chrome 浏览器的驱动程序,实现 Selenium 与浏览器的通信;

Pandas:数据清洗、存储与初步分析;

BeautifulSoup:辅助解析网页 HTML 结构,提取目标数据。

2. 环境配置

(1)ChromeDriver 配置

查看本地 Chrome 浏览器版本(设置→关于 Chrome);

前往ChromeDriver 官方下载页下载对应版本的驱动;

将 ChromeDriver.exe 放入 Python 安装目录(或配置系统环境变量),确保命令行可直接调用。

二、爬取逻辑设计

1. 爬取目标

以京东 “手机” 关键词搜索结果为数据源,提取以下信息:

商品名称;

商品价格;

商品销量(付款人数);

商品评分;

评论数。

三、完整实现代码

python

运行

四、代码核心解析

1. 浏览器配置

关闭webdriver特征检测:通过execute_script修改navigator.webdriver属性,避免京东识别出自动化程序;

隐式等待 + 显式等待结合:隐式等待处理全局元素加载,显式等待确保商品列表加载完成后再解析,避免数据缺失。

2. 动态数据加载处理

京东商品列表采用滚动加载机制,通过window.scrollTo模拟鼠标滚动,配合time.sleep等待数据加载,确保能获取完整的商品信息。

3. 数据提取与容错

针对 “无评分”“销量为空” 等异常情况,通过if-else做容错处理,避免程序崩溃;

使用 BeautifulSoup 解析页面,通过 class 定位元素,适配京东网页结构。

4. 数据清洗与存储

将价格、评论数转为数值型,方便后续分析;

保存为 UTF-8 编码的 CSV 文件,避免中文乱码问题。

五、爬取注意事项

反爬机制规避:

控制请求频率(设置time.sleep),避免短时间内大量请求;

不使用高并发爬取,单线程爬取少量数据(如 10 页内)更安全;

可添加随机 User-Agent,进一步降低被风控的概率。

网页结构变更:京东网页 class 名称可能随版本更新变化,若爬取失败,需通过浏览器开发者工具(F12)重新定位元素的 class 或 XPath。

合法合规性:本代码仅用于学习研究,爬取数据不得用于商业用途,需遵守京东平台的 robots 协议及相关法律法规。

六、数据应用示例

爬取完成后,可通过 Pandas 做简单分析:

python

运行

Plain Text

复制代码

1

2

3

4

5

6

7

8

9

10

import pandas as pd

# 读取数据

df = pd.read_csv('jd_phone_data.csv')

# 1. 筛选评分≥4.8的商品

high_score_phones = df[df['评分'] != '无评分'][df[df['评分'] != '无评分']['评分'].astype(float) ≥ 4.8]

# 2. 统计价格区间分布

price_range = pd.cut(df['价格(元)'], bins=[0, 1000, 2000, 3000, 5000, 10000], labels=['千元内', '1-2千', '2-3千', '3-5千', '5千以上'])

price_dist = price_range.value_counts()

print(price_dist)

总结

Selenium 是解决动态网页爬取的核心工具,通过模拟浏览器行为可获取京东动态加载的商品数据;

爬取过程中需重点处理动态加载、反爬机制、数据容错三大问题,确保数据完整性与程序稳定性;

爬取后的数据分析需基于 Pandas 完成数据清洗,才能挖掘出有价值的市场信息,同时需遵守平台规则与法律规定。

 
最新文章
相关阅读