用Python抓取京东商品评论

news2024/11/26 9:47:29

分析可能存在的失效时,我们强调要基于功能分析失效,每种功能可以思考七种类别失效模式,从而考虑比较全面。

这背后其实是对可靠性概念的理解,可靠性的定义:产品在规定的条件下和规定的时间内,完成规定功能的能力称为可靠性。

从概念出发,只有明确了功能是什么,才能谈失效是什么。

但很多时候,在各类约束下(如时间、成本等),人们普遍不愿意考虑这么多,只想总结历史经验、市场数据,把主要问题解决。这就需要一些数据支撑。

今年我换了个产品品类,搞咖啡机。以前没怎么接触过这个品类,因此我之前规划了一个事项是品类品质调研,其中一个途径是从网上搜集差评进行分析。有一些评论采集工具可以选择使用,但尝试之后,都觉得不尽人意,还是自己写爬虫更快。

相对来说我比较认可京东一些,至少买这么多次东西,即使给差评也没人联系我删除。所以写了个爬虫,从京东抓数据。程序比较通用,只需要把商品编号列入代码中的skulist里,就可以抓取了。

运行效果:

图片

附参考代码:


#咖啡机京东电商差评抓取
#王永平 2023.9.24
import  requests
import  json
import  time
import  openpyxl
#模拟浏览器发送请求并获取响应结果
import random
#https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&myproductId=100006896226&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'
}

#评论的页面
mp = 0

#需要抓的商品编码,这些编码的获得可以另外通过爬虫获取,看自己的需求
skulist = [
'100047982367',
'100059397465',
'4245271',
'14990496145',
'48402170942',
]

def get_comments(myproductId,page):
    #score=0:全部评论,score=1:差评,score=2:中评,score=3:好评
    url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId='+myproductId+'&score=1&sortType=5&page='+str(mp)+'&pageSize=10&isShadowSku=0&fold=1'.format(myproductId,page) # 商品id
    resp=requests.get(url,headers=headers)
    s1=resp.text.replace('fetchJSON_comment98(','') 
    s=s1.replace(');','')
    #将str类型的数据转成json格式的数据
    res=json.loads(s)
    return res

def get_max_page(myproductId):
    dic_data=get_comments(myproductId,0)  #向服务器发送请求,获取字典数据
    return dic_data['maxPage']

def get_info(myproductId):
    global mp
    lst=[]  #用于存储提取到的商品数据
    for page in range(0,get_max_page(myproductId)):   #循环执行次数,商品的最大评论页数为get_max_page(myproductId)
        #获取每页的商品评论
        print("当前评论页面:"+str(page))
        mp=page
        comments=get_comments(myproductId,page)
        comm_lst=comments['comments']
        #遍历评论
        for item in comm_lst:   
            content=item['content']  #评论内容
            print("差评+1:"+content)
            lst.append([content])  
        time.sleep(3)  #延迟时间,防止程序执行速度过快被封IP
    save(lst)

def save(lst):
    #加载文件
    wk = openpyxl.load_workbook('coffee.xlsx')
    #获取活动工作表
    sheet=wk.active
    sheet.append(['coffee_sku',myproductId])  
  #遍历列表,将列表中的数据添加到工作表中,每条数据在Excel中是一行
    for item in lst:
        sheet.append(item)
    wk.save('coffee.xlsx')
    print("----------分割线------------")

if __name__ == '__main__':
  for i in range(0,len(skulist)):
    myproductId = skulist[i]
    print("当前第"+str(i+1)+"款咖啡机,商品编号:"+myproductId)
    print("----------分割线------------")
    get_info(myproductId)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1070722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

架构师-软件工程习题选择题

架构师-软件工程习题选择题

今年较火的扩散模型Diffusion Model

🚀 作者 :“码上有钱” 🚀 文章简介 :AI-扩散算法 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬项目 扩散模型加噪去噪过程 原理 高斯噪声 在深度学习中,高斯噪声通常指的是一种服从…

库存管理与策略模式

库存管理是个难题,涉及到采购、销售、仓储、门店、网站订单各个环节,实物库存和系统库存很难保证完全一致,记得系统刚上线第一天,因为实物库存与导入系统的库存有差异,系统又做了限制系统库存必须大于0才允许销售普通订…

战略咨询只是一个热门词汇?NO!它可能是您企业成功的关键因素

战略咨询只是一个热门词汇?NO!它可能是您企业成功的关键因素。每个企业都有可能遇到困境,战略咨询可以帮助企业找到突破之道。当企业面对挑战时,战略咨询不仅能帮您打开新的视角,还能为您的企业带来创新和成长。 战略咨询是什么意思&#x…

matlab高斯消元法求解线性方程组

高斯消元法的基本原理是通过一系列行变换将线性方程组的增广矩阵转化为简化行阶梯形式,从而得到方程组的解。其核心思想是利用矩阵的行变换操作,逐步消除未知数的系数,使得方程组的求解变得更加简单。 首先,给定系数矩阵A和常数向…

插头 DP

垃圾插头DP,照着打都调了我一下午,淦!!! 学这个玩意纯粹是因为模拟赛考了一道,要不然碰都不会碰…… 我觉得插头DP的主要难度在于实现,而不是理解算法原理…… 不说废话了,进入正…

2023腾讯云服务器优惠代金券领取、查询及使用说明

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

Javascript 笔记:object

一部分object可以见:JavaScript 笔记 初识JavaScript(变量)_UQI-LIUWJ的博客-CSDN博客 1 in操作符 2 hasOwnProperty 3 获取一个object所拥有的所有property 不去原型链上找 4 定义data property

ARM day5

三盏灯流水 .text .global _start _start: 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<4)STR R1,[R0] 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<5)STR R1,[R0] 2.LDR R0,0X50006000LDR R1,[R0]BIC R1,R1,#(0X3<<20)ORR R1,R1,#(0X1<<…

如何快速制作令人惊叹的长图海报

在当今的数字时代&#xff0c;制作一张吸引人的长图海报已成为许多人的需求。无论是为了宣传活动&#xff0c;还是展示产品&#xff0c;一张设计精美的长图海报都能引起人们的注意。下面&#xff0c;我们将介绍一种简单的方法&#xff0c;使用在线海报制作工具来创建长图海报。…

IO 之 操作properties属性文件

propreties文件&#xff1a; properties文件是一种用于存储配置信息的文本文件&#xff0c;通常以“.properties”为文件扩展名。它是一种简单的键值对格式&#xff0c;用于保存应用程序的配置参数。 在properties文件中&#xff0c;每一行都包含一个键值对&#xff0c;键和值…

Legion Y9000X IRH8 2023款(82Y3)原装出厂OEM预装Windows11系统

lenovo联想电脑笔记本拯救者原厂win11系统镜像 下载链接&#xff1a;https://pan.baidu.com/s/15G01j7ROVqOFOETccQSKHg?pwdt1ju 系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;32G或以上的U盘 文件格式&#xff1a;ISO…

【AI视野·今日CV 计算机视觉论文速览 第261期】Thu, 5 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Thu, 5 Oct 2023 Totally 75 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Consistent-1-to-3: Consistent Image to 3D View Synthesis via Geometry-aware Diffusion Models Authors Jianglong Ye, …

Matlab参数估计与假设检验(举例解释)

参数估计分为点估计和区间估计&#xff0c;在matlab中可以调用namefit()函数来计算参数的极大似然估计值和置信区间。而数据分析中用得最多的是正态分布参数估计。 例1 从某厂生产的滚珠中抽取10个&#xff0c;测得滚珠的直径&#xff08;单位&#xff1a;mm&#xff09;为x[…

用好CompletableFuture类,性能起飞

目录 CompletableFuture引言 CompletableFuture本质 CompletableFuture与Future的关系 CompletableFuture创建 同步方法 异步方法 CompletableFuture执行结果 一元依赖 二元依赖 多元依赖 CompletableFuture异常处理 CompletableFuture实现原理 Java 8中引入了Comp…

【力扣-每日一题】2034. 股票价格波动

class StockPrice { private:unordered_map<int,int> mp; //存储日期及其对应的价格multiset<int> st; //存储所有价格int last_day; //最新一天 public:StockPrice() {this->last_day0;}void update(int timestamp, int price) {if(mp.find(timestamp)!mp…

Java——String与StringBuffer的区别

Java——String类与StringBuffer类的区别 1. ●String类表示的字符串是常量&#xff0c;一旦创建后其内容和长度是无法改变的。 ●StringBuffer表示字符容器&#xff0c;其内容和长度是可以修改的。 在操作字符串时&#xff0c;如果该字符串仅用于表示数据类型&#xff0c;则使…

[鹏城杯 2022]简单的php - 无数字字母RCE+取反【*】

[鹏城杯 2022]简单的php 一、解题流程二、思考总结 题目代码&#xff1a; <?php show_source(__FILE__);$code $_GET[code];if(strlen($code) > 80 or preg_match(/[A-Za-z0-9]|\|"||\ |,|\.|-|\||\/|\\|<|>|\$|\?|\^|&|\|/is,$code)){die( Hello);}e…

【juc】future并行执行并获取返回值

目录 一、截图示例二、代码示例2.1 接口示例2.2 调用示例 一、截图示例 二、代码示例 2.1 接口示例 package com.learning.controller;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.…

基于Springboot实现社区维修平台管理系统演示【项目源码+论文说明】分享

基于Springboot的社区维修平台管理系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&am…