当前位置: 首页 > news >正文

爬取京东商品评论 - f

代码:

#导入自动化模块
from DrissionPage import ChromiumPage
import time
import json
#打开浏览器(实例化浏览器对象)
dp = ChromiumPage()
#访问网站
dp.get('https://item.jd.com/10167235203199.html')
#等待加载
time.sleep(2)
#监听数据包
dp.listen.start('getLegoWareDetailComment')
#下滑页面
dp.scroll.to_bottom()
#自动点击打开评论页面(元素定位)
dp.ele('css:#comment-root > div.all-btn').click()
#等待数据包加载
resp = dp.listen.wait()
#获取响应的数据内容
json_data = resp.response.body
print(json_data)
#循环遍历,提取列表里面的元素
for index in comments:
#提取具体每条评论保存字典中dit = {'昵称':index['nickname'],'评分':index['score'],'评论内容':index['content'],'点赞数':index['likeCount'],'回复数':index['replyCount'],'产品型号':index['productName'],'产品颜色':index['productColor'],'发布地区':index['area'],'评论时间':index['createTime'],
}
print(dit)

访问网站需要修改、监听数据包需要修改、打印dit字典内容需要修改、自动点击打开评论页面需要修改
需要添加将爬取的数据转为json进行存储的代码
修改之后的代码:

#导入自动化模块
from DrissionPage import ChromiumPage
import time
import json
#打开浏览器(实例化浏览器对象)
dp = ChromiumPage()
#访问网站
dp.get('https://item.jd.com/10167235203199.html')
#等待加载
time.sleep(2)
#监听数据包
dp.listen.start('getLegoWareDetailComment')
#下滑页面
dp.scroll.to_bottom()
#自动点击打开评论页面(元素定位)
dp.ele('css:#comment-root > div.all-btn').click()
#等待数据包加载
resp = dp.listen.wait()
#获取响应的数据内容
json_data = resp.response.body
print("获取到API响应数据")#提取评论列表
if json_data and 'commentInfoList' in json_data:comments = json_data['commentInfoList']print(f"找到 {len(comments)} 条评论")#循环遍历,提取列表里面的元素for index in comments:#提取具体每条评论保存字典中dit = {'昵称': index.get('userNickName', '未知用户'),'评分': index.get('commentScore', 0),'评论内容': index.get('commentData', ''),'点赞数': index.get('praiseCnt', 0),'回复数': index.get('replyCnt', 0),'产品型号': '','产品颜色': '','发布地区': index.get('publishArea', ''),'评论时间': index.get('commentDate', '')}print("\n提取到的评论:")print(dit)
else:print("没有找到评论列表")print("响应数据的键:", list(json_data.keys()) if json_data else "无数据")

以json形式存储:

#导入自动化模块
from DrissionPage import ChromiumPage
import time
import json
import os# 确保输出目录存在
output_dir = './dashuju/output'
os.makedirs(output_dir, exist_ok=True)# 输出JSON文件路径
output_file = os.path.join(output_dir, 'jd_phone_comments.json')#打开浏览器(实例化浏览器对象)
dp = ChromiumPage()
#访问网站
dp.get('https://item.jd.com/10167235203199.html')
#等待加载
time.sleep(2)
#监听数据包
dp.listen.start('getLegoWareDetailComment')
#下滑页面
dp.scroll.to_bottom()
#自动点击打开评论页面(元素定位)
dp.ele('css:#comment-root > div.all-btn').click()
#等待数据包加载
resp = dp.listen.wait()
#获取响应的数据内容
json_data = resp.response.body
print("获取到API响应数据")#提取评论列表
processed_comments = []
if json_data and 'commentInfoList' in json_data:comments = json_data['commentInfoList']print(f"找到 {len(comments)} 条评论")#循环遍历,提取列表里面的元素for index in comments:#提取具体每条评论保存字典中dit = {'昵称': index.get('userNickName', '未知用户'),'评分': index.get('commentScore', 0),'评论内容': index.get('commentData', ''),'点赞数': index.get('praiseCnt', 0),'回复数': index.get('replyCnt', 0),'产品型号': '','产品颜色': '','发布地区': index.get('publishArea', ''),'评论时间': index.get('commentDate', '')}processed_comments.append(dit)print("\n提取到的评论:")print(dit)# 保存评论数据到JSON文件try:with open(output_file, 'w', encoding='utf-8') as f:json.dump(processed_comments, f, ensure_ascii=False, indent=2)print(f"\n评论数据已成功保存到: {output_file}")print(f"共保存 {len(processed_comments)} 条评论")except Exception as e:print(f"保存JSON文件失败: {e}")
else:print("没有找到评论列表")print("响应数据的键:", list(json_data.keys()) if json_data else "无数据")
http://www.jsqmd.com/news/89220/

相关文章:

  • 前端技术风险防控:以防为主,防控结合
  • 006发布文章测试用例
  • XXL-TOOL v2.4.0 发布 | 布隆过滤器、Excel流式读写、高性能BeanCopy
  • 使用哈希函数存储密码时为什么要加“盐”?
  • 给女神发“在吗”,她回了个表情包是几个意思?—— 硬核探讨TCP 三次握手
  • 抖音卖货起号精细化运营第一天看懂五维四率复盘
  • 力扣 Hot 100 之 206. 反转链表:面试官的“开胃菜”
  • 课程设计自主选题————图书管理系统
  • AI 工具实战测评:它们到底是“生产力工具”,还是“智商税”?
  • 10394_基于Springboot的社区生活事务管理系统
  • vue基于Spring Boot的灌区取用水量调配信息管理系统的应用和研究_2dw80bw4
  • HTML如何设计大文件上传的权限控制与验证机制?
  • 函数介绍及使用
  • .NET周刊【11月第3期 2025-11-16】
  • BLOG-2-数字电路模拟程序及课堂测验
  • 探索电机控制器IGBT结温估算:从算法到模型的深度揭秘
  • Vue.js如何设计大文件上传的日志记录与监控?
  • vue基于Spring Boot的检察院企业单位会议记录系统的应用和研究_44l22b02
  • 详细介绍:【C++STL】priority_queue 模拟实现与仿函数实战
  • 数据资产平台(数据血缘、数据资产地图)技术框架图
  • Comsol 二维轴对称双温方程 固体传热变形几何(有烧蚀效果) 附带参考模型和参考文献
  • 感应电机转子磁场定向FOC仿真与异步电机调速控制仿真那些事儿
  • 提前备赛GESP(统一讲解了从C++2级到C++7级的考点与策略) - 教程
  • Simplorer与Maxwell电机联合仿真:探索电机控制的新旅程
  • python脚本攻击Easy File Sharing Web Server
  • 无刷直流电机双闭环仿真:稳定运行与制动工况下的调制探索
  • 完整教程:JAVA同城服务场馆预约门店预约健身房瑜伽馆预约系统支持H5小程序APP源码
  • 西门子WINCC在暖通空调及公用系统项目中的实战分享
  • 复现《基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计
  • 聊聊三相、五相电机的容错控制