Lazy loaded image
Python
使用DrissionPage爬取京东商品
字数 4157阅读时长 11 分钟
2025-12-12
2025-12-12
type
status
date
slug
summary
tags
category
icon
password

📋 项目简介

这是一个基于 DrissionPage 的京东商品数据爬虫工具,可以自动抓取京东商品的搜索结果和详情页信息,并导出为 Excel 文件

✨ 主要功能

  • 🔍 搜索商品:根据关键词搜索京东商品,支持多页抓取
  • 📊 详情获取:自动进入商品详情页,提取完整的商品信息
  • 💾 数据导出:将数据保存为 Excel 文件,自动调整列宽
  • 🔄 数据补全:支持对已有 Excel 文件进行数据补全
  • 🛡️ 反爬处理:内置验证码检测和重试机制

📦 依赖安装

🚀 使用方法

模式一:搜索并导出商品数据

运行程序后,按照提示操作:

操作步骤:

  1. 选择模式
    1. 输入商品名称
      1. 设置爬取页数
        1. 限制详情数量
          1. 是否获取详情
            1. 设置访问间隔(防止被封)

              输出结果:

              程序会生成一个 Excel 文件,例如:显示器商品列表.xlsx

              模式二:补全已有 Excel 数据

              适用于之前爬取失败或需要更新数据的场景。

              操作步骤:

              1. 选择模式
                1. 设置访问间隔
                  1. 输入 Excel 路径
                    1. 设置分类名称(可选)
                      1. 指定 URL 过滤(可选)

                        📊 导出数据字段说明

                        字段名
                        说明
                        示例
                        title
                        商品标题
                        Dell 27英寸显示器
                        realPrice
                        原价
                        2999
                        finalPrice
                        最终价格
                        2599
                        sellingPoint
                        卖点(多个用|分隔)
                        高清|护眼|旋转升降
                        wareUrl
                        商品链接
                        description
                        商品属性(JSON格式)
                        [{"name":"品牌","value":"DELL"},...]
                        specs
                        规格信息(JSON格式)
                        [{"price":2599,"name":"黑色"}]
                        brand
                        品牌
                        DELL
                        mainImage
                        主图链接
                        images
                        轮播图(JSON数组)
                        ["https://...", "https://..."]
                        categoryName
                        分类名称
                        显示器
                        detailStatus
                        详情状态
                        success/no_api/captcha/error

                        🔧 核心功能详解

                        1. 搜索页数据抓取

                        • 使用 DrissionPage 监听京东搜索 API
                        • 自动翻页并收集所有商品数据
                        • 返回原始的 wareList 数据

                        2. 详情页数据提取

                        提取的详情信息:
                        • 商品属性(description)
                        • 规格信息(specs)
                        • 品牌(brand)
                        • 主图和轮播图(mainImage, images)
                        反爬机制:
                        • 每个商品重启监听,避免数据混淆
                        • 多次重试机制(默认2次)
                        • 验证码检测与人工介入

                        3. Excel 导出与格式化

                        • 自动计算列宽,确保内容完整显示
                        • 使用 openpyxl 引擎保证兼容性

                        ⚠️ 注意事项

                        1. 访问频率控制

                        建议设置合理的访问间隔(3-8秒),避免触发京东反爬机制:

                        2. 验证码处理

                        遇到验证码时,程序会暂停并提示:
                        手动完成验证后按回车即可继续。

                        3. 数据状态说明

                        detailStatus 字段标识数据获取状态:
                        • success:成功获取
                        • no_api:未捕获到详情接口
                        • captcha:遇到验证码
                        • error:发生异常
                        • skipped:用户跳过
                        • no_url:缺少商品链接

                        4. 补全模式说明

                        补全模式只会处理以下情况的商品:
                        • detailStatus 不是 success
                        • description 字段为空或为 []

                        💡 使用技巧

                        1. 批量补全特定商品

                        创建一个 urls.txt 文件,每行一个商品链接:
                        然后在补全模式中指定该文件路径。

                        2. 分批次爬取

                        对于大量商品,建议分批次爬取:

                        3. 数据验证

                        爬取完成后,可以通过 detailStatus 字段筛选失败的商品:

                        🐛 常见问题

                        Q1: 为什么有些商品详情获取失败?

                        原因:
                        • 访问频率过快触发反爬
                        • 网络波动导致接口超时
                        • 商品页面结构特殊
                        解决方案:
                        • 增加访问间隔时间
                        • 使用补全模式重新获取失败的商品
                        • 检查网络连接

                        Q2: 如何提高爬取成功率?

                        1. 设置合理的访问间隔(建议 4-8 秒)
                        1. 使用重试机制(已内置)
                        1. 分批次爬取,避免一次性爬取过多
                        1. 遇到验证码及时处理

                        Q3: Excel 文件过大怎么办?

                        可以通过以下方式优化:
                        • 限制获取详情的商品数量
                        • 分多个文件保存
                        • 只保存必要的字段

                        📝 代码示例

                        仅获取搜索列表(不获取详情)

                        自定义处理数据

                        🎯 总结

                        这个爬虫工具提供了完整的京东商品数据采集方案,包括:
                        • ✅ 搜索页批量采集
                        • ✅ 详情页深度提取
                        • ✅ 数据补全与更新
                        • ✅ 反爬与异常处理
                        • ✅ Excel 格式化导出
                        适合用于商品数据分析、价格监控、竞品研究等场景。

                        免责声明:本工具仅供学习交流使用,请遵守京东网站的 robots.txt 协议和相关法律法规,不要用于商业用途或大规模爬取。

                        完整代码

                        上一篇
                        2025-12-15面试题
                        下一篇
                        Vue 项目中使用省市区级联选择器