用Python抓取京东商品评论

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

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

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

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

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

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值