分析可能存在的失效时,我们强调要基于功能分析失效,每种功能可以思考七种类别失效模式,从而考虑比较全面。
这背后其实是对可靠性概念的理解,可靠性的定义:产品在规定的条件下和规定的时间内,完成规定功能的能力称为可靠性。
从概念出发,只有明确了功能是什么,才能谈失效是什么。
但很多时候,在各类约束下(如时间、成本等),人们普遍不愿意考虑这么多,只想总结历史经验、市场数据,把主要问题解决。这就需要一些数据支撑。
今年我换了个产品品类,搞咖啡机。以前没怎么接触过这个品类,因此我之前规划了一个事项是品类品质调研,其中一个途径是从网上搜集差评进行分析。有一些评论采集工具可以选择使用,但尝试之后,都觉得不尽人意,还是自己写爬虫更快。
相对来说我比较认可京东一些,至少买这么多次东西,即使给差评也没人联系我删除。所以写了个爬虫,从京东抓数据。程序比较通用,只需要把商品编号列入代码中的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)