京东商品评论图片爬虫教程:轻松下载用户晒单图
关键词:京东评论爬虫、Python爬虫、图片下载、数据爬取、掘金热门
📌 前言
在电商分析或竞品调研中,用户评论图片是重要的数据来源。本教程将手把手教你使用Python脚本爬取京东商品评论中的用户晒单图片,并保存到本地。代码简单易用,适合新手学习,也可作为项目实战案例!
🛠️ 环境准备
-
Python 3.6+(推荐使用Anaconda)
-
安装依赖库:
bash
复制
pip install requests pandas
📥 脚本使用步骤
1. 获取商品链接
- 打开京东商品页面(例如:恋的法式连衣裙夏季2024新款仙女公主裙学生气质纯欲温柔风长裙子夏天 潮流韩版杏色 均码(可备注码数)【图片 价格 品牌 报价】-京东),复制链接。
- 注意 :链接需包含商品ID(如
10099602806438
)。
2. 运行脚本
将以下代码保存为 jing_dong.py
,运行并按提示操作:
python
复制
bash
# 代码见问题描述中的文件内容
输入说明:
- 商品链接:粘贴复制的京东商品链接。
- 评论页数:爬取多少页评论(每页10条)。
⚙️ 功能详解
1. 自动解析商品ID
脚本通过正则表达式从链接中提取商品ID,并创建同名文件夹保存图片。
2. 图片下载逻辑
- 图片URL处理:修复京东图片缩略图路径,获取高清原图。
- 防重复命名 :使用
评论ID + 序号
作为文件名,避免冲突。 - 异常处理:自动跳过下载失败的图片并打印错误信息。
3. 反爬策略
- Headers设置:模拟浏览器User-Agent。
- 请求间隔 :
time.sleep(1.5)
控制请求频率,避免被封IP。
❗ 常见问题
Q1:运行时报错 ModuleNotFoundError
原因 :未安装依赖库。 解决 :执行 pip install requests pandas
。
Q2:图片下载失败或保存为空文件
原因 :网络超时或图片URL失效。 解决:
- 检查网络连接,尝试重新运行。
- 修改代码中的
timeout
参数(默认10秒)。
Q3:无法获取评论数据
原因 :京东API结构变化或触发反爬。 解决:
- 在Headers中添加
Referer
字段(取消代码注释)。 - 增加随机延迟或使用代理IP。
🚀 扩展功能
- 保存评论数据到CSV : 取消代码末尾的注释,修改
data_list
结构以存储评论内容、用户昵称等字段。 - 多线程下载 :使用
threading
库加速图片下载。
📸 效果展示
全部代码展示:
python
import requests
import time
import pandas as pd
import re
import os
url = input("请输入商品链接:")
product_id = re.search(r'(?<=item\.jd\.com\/)\d+(?=\.html)', url).group()
# 创建保存图片的文件夹
os.makedirs(product_id, exist_ok=True)
total_pages = int(input("请输入评论页数:"))
output_file = "../淘宝评论爬取/comments.csv"
data_list = []
for page in range(0, total_pages + 1):
# 构建评论API请求URL
api_url = (
f"https://club.jd.com/comment/productPageComments.action"
f"?productId={product_id}"
f"&score=0&sortType=5"
f"&page={page}&pageSize=10"
"&isShadowSku=0&fold=1"
)
headers = {
"User-Agent": "填写自己的User-Agent",
# "Referer": url # 添加Referer反反爬
}
time.sleep(1.5)
response = requests.get(api_url, headers=headers)
data = response.json()
if "comments" not in data:
continue
for comment in data["comments"]:
comment_id = comment.get("id", "unknown_id") # 提取评论ID
images = comment.get("images", [])
if images:
for img_index, img in enumerate(images):
img_url = img.get("imgUrl", "")
if not img_url:
continue
# 处理图片URL格式
if img_url.startswith("//"):
img_url = f"https:{img_url}"
img_url = img_url.replace("n0/s128x96_jfs", "shaidan/s616x405_jfs")
try:
# 下载图片
img_response = requests.get(img_url, headers=headers, timeout=10)
# 检查HTTP错误
# 生成唯一文件名
filename = f"{comment_id}_{img_index}.jpg"
# 保存图片
with open(save_path, "wb") as f:
f.write(img_response.content)
print(f"图片已保存: {save_path}")
except Exception as e:
print(f"下载失败: {img_url} - 错误: {str(e)}")
time.sleep(0.5) # 避免频繁请求
else:
data_list.append("") # 无图片时填充空值
# 可选:将评论数据保存到CSV(根据实际需求完善字段)
# df = pd.DataFrame(data_list, columns=["字段1", "字段2"])
# df.to_csv(output_file, index=False)
💡 总结
本脚本实现了京东评论图片的自动化爬取,适合用于数据采集、竞品分析等场景。后续可结合Scrapy框架或数据库存储进行功能增强。
提示:爬虫需遵守网站规则,勿用于商业用途或高频访问!
© 版权声明 :本文由[鹿邑网爬]原创,转载请注明出处。 🔥 关注我,获取更多Python爬虫与数据分析干货!有问题可+:
an1544167879