1. 京东商品主图保存的需求背景
作为国内最大的B2C电商平台,京东每天都有海量商品图片更新。这些高清主图对以下人群具有重要价值:
- 电商从业者需要收集竞品主图进行市场分析
- 设计师需要参考优质商品图的构图和配色
- 个人用户想保存心仪商品的图片作为购买参考
- 自媒体需要商品图进行内容创作
传统保存方式需要逐个右键另存为,当需要批量保存时效率极低。以某款手机为例,仅主图就有6-8张不同角度的高清图,手动保存耗时约2分钟/商品。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术实现原理分析
2.1 京东图片加载机制
京东商品页采用动态加载技术,主图实际存储在CDN服务器。通过Chrome开发者工具分析,可发现:
- 主图容器使用
<img>标签 - 真实图片URL隐藏在
data-origin属性中 - 大图URL格式通常为:
https://img10.360buyimg.com/imgzone/[图片ID].jpg
2.2 图片URL提取逻辑
有效的主图URL需要满足:
- 域名包含
360buyimg.com - 路径包含
imgzone或n0等京东专用目录 - 文件扩展名为
.jpg/.png/.webp
3. 浏览器控制台解决方案
3.1 单页图片抓取脚本
在商品页按F12打开控制台,执行以下JavaScript代码:
javascript复制// 获取所有图片元素
const images = document.querySelectorAll('img');
// 过滤出京东主图
const jdImages = Array.from(images).filter(img => {
return img.src.includes('360buyimg.com') &&
(img.src.includes('imgzone') || img.src.includes('n0'));
});
// 下载图片函数
function downloadImage(url, filename) {
fetch(url)
.then(response => response.blob())
.then(blob => {
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = filename;
link.click();
});
}
// 批量下载
jdImages.forEach((img, index) => {
const imgUrl = img.src.replace(/\/s\d+x\d+_/, '/'); // 去除尺寸限制
const fileName = `jd_image_${index + 1}.${imgUrl.split('.').pop()}`;
setTimeout(() => {
downloadImage(imgUrl, fileName);
}, index * 500); // 防止请求过于密集
});
3.2 脚本使用注意事项
- 京东有反爬机制,连续下载超过20张可能触发验证
- 部分图片需要移除URL中的尺寸参数才能获取原图
- 建议在单个商品页使用,跨页面需重新执行
4. Python自动化方案
4.1 环境准备
bash复制pip install requests beautifulsoup4 selenium
4.2 完整爬虫代码
python复制import os
import time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from urllib.parse import urlparse
def get_jd_images(product_url, save_dir='jd_images'):
# 创建保存目录
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 使用Selenium获取动态加载内容
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.get(product_url)
time.sleep(3) # 等待页面加载
# 解析页面
soup = BeautifulSoup(driver.page_source, 'html.parser')
img_tags = soup.find_all('img')
# 过滤京东主图
valid_images = []
for img in img_tags:
src = img.get('src') or img.get('data-origin') or ''
if '360buyimg.com' in src and ('imgzone' in src or 'n0' in src):
# 获取高清原图
clean_url = src.split('!')[0].replace('/s160x160_', '/')
valid_images.append(clean_url)
# 下载图片
for idx, img_url in enumerate(set(valid_images)): # 去重
try:
res = requests.get(img_url, stream=True, headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
})
if res.status_code == 200:
ext = os.path.splitext(urlparse(img_url).path)[1] or '.jpg'
with open(f'{save_dir}/img_{idx}{ext}', 'wb') as f:
for chunk in res.iter_content(1024):
f.write(chunk)
print(f'已下载: {img_url}')
except Exception as e:
print(f'下载失败 {img_url}: {str(e)}')
driver.quit()
# 使用示例
get_jd_images('https://item.jd.com/100038177084.html')
4.3 方案优化建议
- 添加代理IP轮换避免封禁
- 实现自动翻页获取更多商品
- 增加失败重试机制
- 使用异步请求提高效率
5. 浏览器插件方案
5.1 推荐插件
-
ImageAssistant(Chrome/Firefox)
- 支持批量图片嗅探
- 可按分辨率筛选京东主图
- 一键打包下载ZIP
-
Fatkun(Chrome)
- 自动识别同类图片
- 支持按规则过滤URL
- 可设置自动命名规则
5.2 插件使用技巧
- 在京东商品页点击插件图标
- 筛选"大型图片"类型
- 按"360buyimg.com"域名过滤
- 使用"本页全选"功能
- 设置文件名包含商品ID
6. 移动端解决方案
6.1 APP端图片获取
- 使用京东APP分享功能生成商品链接
- 通过PC端打开链接后使用前述方法
- 或使用抓包工具(如HttpCanary)获取图片API
6.2 微信小程序方案
- 小程序中长按图片选择"复制图片链接"
- 将链接粘贴到浏览器地址栏
- 删除URL中的尺寸参数获取原图
7. 高级技巧与注意事项
7.1 原图获取秘诀
京东图片URL常见参数:
/s160x160_:缩略图尺寸!/format/webp:WebP格式q90:图片质量
获取最高清原图需要:
- 删除所有尺寸参数
- 将webp改为jpg(部分老图无webp格式)
- 保留或提高质量参数
7.2 法律风险规避
- 仅用于个人学习研究
- 不进行商业用途传播
- 不在自动化脚本中设置过高频率
- 建议单日抓取不超过100个商品
7.3 反反爬策略
- 随机User-Agent轮换
- 请求间隔设置为2-5秒
- 使用Cookies模拟登录状态
- 重要操作模拟人工鼠标移动
8. 常见问题排查
8.1 图片下载失败
可能原因:
- 京东服务器限制
- 图片URL已过期
- 网络环境问题
解决方案:
- 检查URL是否包含
360buyimg.com - 尝试移除URL中的尺寸参数
- 更换网络环境重试
8.2 获取的图片不清晰
处理方法:
- 确认URL中没有
s160x160等尺寸限制 - 尝试将
.webp改为.jpg - 检查是否有更高分辨率的替代图
8.3 浏览器插件不工作
排查步骤:
- 检查插件是否在京东域名启用
- 刷新页面后重新尝试
- 更新插件到最新版本
- 检查浏览器隐私设置是否过严
