当前位置:网站首页 >  教程

零门槛用Python快速爬取京东商品公开合规买家秀图文实操指南

时间:2026年05月26日 13:38:38 来源:易频IT社区

前置准备

环境搭建

本次使用Python 3.10+(兼容性最优),提前安装以下库:

  • requests:发送HTTP请求,获取页面源码或接口数据
  • jsonpath:解析JSON格式的接口数据,提取目标字段
  • os:创建本地文件夹存储图片
  • time:控制请求频率,避免触发京东反爬

安装命令(Windows/macOS/Linux通用,打开终端/命令提示符执行):

``` pip install requests jsonpath ```

获取核心参数

本次爬取无需登录京东账号,仅抓取公开的买家秀(晒单/默认带图评价),需要2个核心参数:

  • sku_id:京东商品唯一标识
  • cookie:模拟浏览器身份,提高请求成功率(可选但强烈推荐)

参数获取步骤

获取sku_id

打开任意京东商品详情页(比如https://item.jd.com/100012043978.html),URL中「.html」前的数字100012043978就是sku_id,直接复制即可。

获取Cookie(可选但成功率提升80%)

1. 打开Chrome/Edge浏览器,访问京东首页(https://www.jd.com/),无需登录

2. 按F12打开开发者工具,切换到「Network(网络)」选项卡;

零门槛用Python快速爬取京东商品公开合规买家秀图文实操指南

3. 刷新页面,在Network的「Filter(筛选)」框输入「pingjia」;

4. 点击任意名称包含「pingjia」的请求,在右侧「Headers(请求头)」面板找到「Request Headers」下的「Cookie」字段,复制完整内容(注意不要复制多余空格或换行)。

代码实现

创建一个名为jd_buyer_show.py的Python文件,将以下完整代码复制进去,根据提示修改核心参数即可运行:

``` import requests import jsonpath import os import time import random - 修改区域 START - SKU_ID = "100012043978" 替换为你要爬取的商品sku_id COOKIE = "你刚才复制的完整Cookie" 如果没获取Cookie,填空字符串"" SAVE_FOLDER = f"jd_buyer_show_{SKU_ID}" 自动生成带sku_id的本地存储文件夹 PAGE_COUNT = 5 爬取的买家秀页数,每页约10条带图评价 - 修改区域 END - 初始化请求头 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Referer": f"https://item.jd.com/{SKU_ID}.html", "Cookie": COOKIE if COOKIE else "" } 创建本地存储文件夹 if not os.path.exists(SAVE_FOLDER): os.makedirs(SAVE_FOLDER) print(f"已创建存储文件夹:{SAVE_FOLDER}") else: print(f"存储文件夹已存在:{SAVE_FOLDER}") def get_buyer_show(page): """ 爬取指定页的买家秀数据 :param page: 页码,从0开始 :return: 图片URL列表 """ 京东公开买家秀接口(无需登录) url = f"https://club.jd.com/comment/productPageComments.action?productId={SKU_ID}&score=0&sortType=5&page={page}&pageSize=10&isShadowSku=0&fold=1" try: 发送GET请求,设置超时时间10秒 response = requests.get(url, headers=HEADERS, timeout=10) 强制设置响应编码为UTF-8,避免乱码 response.encoding = "UTF-8" 解析JSON数据 data = response.json() 提取图片URL列表(只提取带图评价) img_urls = jsonpath.jsonpath(data, "$.comments[].images[].imgUrl") JSONPath返回None时说明该页无图片,转成空列表 return img_urls if img_urls else [] except Exception as e: print(f"第{page+1}页请求失败:{str(e)}") return [] def download_img(img_url, img_index, page_index): """ 下载单张图片 :param img_url: 图片原始URL :param img_index: 图片在当前页的序号 :param page_index: 当前页码(从0开始) """ 图片原始URL是缩略图,替换成高清图URL hd_img_url = img_url.replace("s128x96_jfs", "jfs") try: 发送图片请求 img_response = requests.get(hd_img_url, headers=HEADERS, timeout=10) 构造本地保存路径 img_path = os.path.join(SAVE_FOLDER, f"page_{page_index+1}_img_{img_index+1}.jpg") 写入图片文件 with open(img_path, "wb") as f: f.write(img_response.content) print(f"已下载:{img_path}") except Exception as e: print(f"图片下载失败:{hd_img_url},错误原因:{str(e)}") if __name__ == "__main__": total_img_count = 0 循环爬取指定页数 for page in range(PAGE_COUNT): print(f"-- 开始爬取第{page+1}页 --") img_urls = get_buyer_show(page) if not img_urls: print(f"第{page+1}页无带图评价,跳过") continue 循环下载当前页所有图片 for img_idx, img_url in enumerate(img_urls): download_img(img_url, img_idx, page) total_img_count += 1 随机休眠0.5-2秒,控制请求频率 time.sleep(random.uniform(0.5, 2)) 每页爬完后额外随机休眠1-3秒 time.sleep(random.uniform(1, 3)) print(f"-- 爬取完成!共下载{total_img_count}张买家秀图片 --") ```

关键代码说明

接口URL解析

京东公开买家秀接口URL参数固定格式如下,无需额外改动:

  • productId:商品sku_id
  • score:评价分数(0=全部,1=差评,2=中评,3=好评,这里用0抓所有带图评价)
  • sortType:排序方式(5=最新评价,3=默认推荐,可根据需求修改)
  • page:页码(从0开始计数)
  • pageSize:每页评价条数(最大10,超过会被京东限制)

高清图片替换逻辑

接口返回的图片原始URL是「s128x96_jfs」开头的128×96缩略图,替换成「jfs」开头即可获取原尺寸高清图,无需其他处理。

反爬控制

代码中加入了3个反爬措施,可大幅降低触发京东IP限制的概率:

  • 添加真实的User-Agent和Referer
  • 随机休眠0.5-2秒(单张图片下载间隔)
  • 随机休眠1-3秒(单页爬取间隔)

注意事项

  • 仅用于个人学习/研究,不得批量爬取后用于商业用途,遵守《网络安全法》和京东《用户协议》
  • 如果触发IP限制(请求返回403/503),可:
    • 等待10-30分钟后再试
    • 更换网络环境(比如切换手机热点)
    • 重新获取Cookie(即使未登录,京东偶尔会更新临时Cookie)
  • PAGE_COUNT建议不超过20,避免对京东服务器造成压力
  • 如果图片无法下载,检查网络连接或替换的高清图URL是否正确

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图