随便点击一个商品,我点的是“https://item.jd.com/3533885.html”
查看评论是否动态数据:点击改变评论页数(图中1处),网址(图中2处)不会变,说明是动态数据

F12(或者右击检查网页源代码)->点击“Network”->F5(或ctrl+R)
点击网页“商品评价”

找到途中1,点击,复制2url:“https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=3533885&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1”
打开查看是否评论区的json数据:

把整个网页复制到“http://json.cn/”,删除前面的“fetchJSON_comment98(”和后面的“);”
就能更清晰的看出数据:

1.获取评论区的json数据

import  requests
url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=3533885&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
resp=requests.get(url)
print(resp.text)

2.获取商品评论的最大页数(根据商品编号)

import  requests
import json
def get_comments(productId,page):url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId={0}&score=0&sortType=5&page={1}&pageSize=10&isShadowSku=0&fold=1'.format(productId, page)resp=requests.get(url)#print(resp.text)s = resp.text.replace('fetchJSON_comment98(', '')s = s.replace(');', '')#将str类型的数据转成json格式的数据json_data=json.loads(s)return json_data
#获取最大页数
def get_max_page(productId):dic_data=get_comments(productId,0)  #调用get_comments函数,向服务器发送请求,获取字典数据return dic_data['maxPage']if __name__ == '__main__':productId="3533885"print(get_max_page(productId))

100

3.根据json数据确定自己要获取的数据

import  requests
import json
import  time
import  openpyxl  #用于操作Excel文件的
def get_comments(productId,page):url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId={0}&score=0&sortType=5&page={1}&pageSize=10&isShadowSku=0&fold=1'.format(productId, page)resp=requests.get(url)#print(resp.text)s = resp.text.replace('fetchJSON_comment98(', '')s = s.replace(');', '')#将str类型的数据转成json格式的数据json_data=json.loads(s)return json_data
#提取数据
def get_info(productId):#调用函数获取商品的最大评论页数#max_page=get_max_page(productId)max_page=20lst=[]  #用于存储提取到的商品数据for page in range(1,max_page+1):   #循环执行次数#获取每页的商品评论comments=get_comments(productId,page)comm_lst=comments['comments']   #根据key获取value,根据comments获取到评论的列表(每页有10条评论)#遍历评论列表,分别获取每条评论的中的内容,颜色,商品的类型for item in comm_lst:   #每条评论又分别是一个字典,再继续根据key获取值content=item['content']  #获取评论中的内容color=item['productColor'] #获取评论购买商品的口味lst.append([content,color])  #将每条评论的信息添加到列表中time.sleep(3)  #延迟时间,防止程序执行速度太快,被封IPsave(lst)  #调用自己编写的函数,将列表中的数据进行存储#用于将爬取到的数据存储到Excel中
def save(lst):wk=openpyxl.Workbook () #创建工作薄对象noodles=wk.active  #获取活动表#遍历列表,将列表中的数据添加到工作表中,列表中的一条数据,在Excel中是 一行for item in lst:sheet.append(item)#保存到磁盘上wk.save('销售数据.xlsx')if __name__ == '__main__':productId='3533885'#print(get_max_page(productId))get_info(productId)

4.简单分析

(1)查看表格几行几列

import  openpyxl
#从Excel中读取数据
wk=openpyxl.load_workbook('销售数据.xlsx')
noodles=wk.active  #获取活动sheet表
#获取最大行数和最大列数
rows=noodles.max_row     #200行
cols=noodles.max_column   #2列
print(rows,cols)

200 2

(2)统计口味数据(简单对excel表格进行处理)

import  openpyxl
#从Excel中读取数据
wk=openpyxl.load_workbook('销售数据.xlsx')
noodles=wk.active  #获取活动sheet表
#获取最大行数和最大列数
rows=noodles.max_row     #200行
cols=noodles.max_column   #2列lst=[] #用于存储方便面口味
for i in range(1,rows+1):color=noodles.cell(i,2).valuelst.append(color)'''for item in lst:print(item)'''
'''从Excel中将方便面口味数据读取完毕,添加到列表中,以下操作,开始数据统计,统计不同口味的方便面销售'''
'''Python中有一种数据结构叫字典,使用口味作key,使用销售数量作value'''
dic_color={}
for item in lst:dic_color[item]=0for item in lst:for color in dic_color:  #遍历字典if item==color:dic_color[color]+=1break
'''for item in dic_color:print(item,dic_color[item])'''
lst_total=[]
for item in dic_color:lst_total.append([item,dic_color[item],dic_color[item]/200*1.0])for item in lst_total:print(item)

[‘大食袋酸菜牛肉面’, 23, 0.115]
[‘大食袋鲜虾鱼板面’, 34, 0.17]
[‘大食袋红烧牛肉面’, 110, 0.55]
[‘大食袋香辣牛肉面’, 31, 0.155]
[None, 2, 0.01]

(3)生成饼图

import  openpyxl
import matplotlib.pyplot as pit
#从Excel中读取数据
wk=openpyxl.load_workbook('销售数据.xlsx')
noodles=wk.active  #获取活动sheet表
#获取最大行数和最大列数
rows=noodles.max_row     #200行
cols=noodles.max_column   #2列lst=[] #用于存储方便面口味
for i in range(1,rows+1):color=noodles.cell(i,2).valuelst.append(color)'''for item in lst:print(item)'''
'''从Excel中将方便面口味数据读取完毕,添加到列表中,以下操作,开始数据统计,统计不同口味的方便面销售'''
'''Python中有一种数据结构叫字典,使用口味作key,使用销售数量作value'''
dic_color={}
for item in lst:dic_color[item]=0for item in lst:for color in dic_color:  #遍历字典if item==color:dic_color[color]+=1break
'''for item in dic_color:print(item,dic_color[item])'''
lst_total=[]
for item in dic_color:lst_total.append([item,dic_color[item],dic_color[item]/200*1.0])'''for item in lst_total:print(item)'''
'''数据统计完毕,开始进行数据可视化'''labels=[item[0] for item in lst_total]  #使用列表生成式,得到饼图的标签
fraces=[item[2] for item in lst_total]  #饼图中的数据源
pit.rcParams['font.family']=['SimHei']
pit.pie(x=fraces,labels=labels,autopct='%1.1f%%')
#pit.show()
pit.savefig('饼图.jpg')

爬虫入门-京东评论爬取和简单分析[学习笔记]相关推荐

  1. python爬猫眼电影影评,Python系列爬虫之爬取并简单分析猫眼电影影评

    前言 今天给大家介绍利用Python爬取并简单分析猫眼电影影评.让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: requests模块: pyecharts模块: jieba模 ...

  2. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  3. 【爬虫实战】评论爬取及词频统计详解

    爬虫 前言 aqy评论爬取 请求数据 数据清洗 爬取数据 分词 停用词 绘制统计表 词云绘制 主函数 一些其他问题优化 前言 本项目来自Baidu AI Studio相关python课程. aqy评论 ...

  4. python爬取豆瓣短评_爬取并简单分析豆瓣电影短评

    导语 利用Python爬取并简单分析豆瓣电影短评. 说起来挺逗的,去年爬豆瓣短评的时候还是可以爬个几万条数据的,昨天我还想着终于可以起个唬人的标题了,什么爬取了xxx电影的xxx万条数据. 于是昨晚写 ...

  5. 爬虫入门——用python爬取网易云音乐热门歌手评论数

    本文参考Monkey_D_Newdun 的文章 https://blog.csdn.net/Monkey_D_Newdun/article/details/79318629 用爬虫获取网易云音乐热门歌 ...

  6. python爬虫爬取图片代码_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...

    Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...

  7. python爬虫快速下载图片_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...

    Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...

  8. 爬虫入门——电影top250爬取

    爬虫入门(自用) 第一篇 Python 爬虫入门之 电影top250爬取 文章目录 爬虫入门(自用) 前言 一.前置知识 requests库 正则表达式(re库) 二.使用步骤 1.引入库 2.小试牛 ...

  9. python爬虫教程网-python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

最新文章

  1. Aptana 安装jQuery库 智能提示
  2. 自由缩放属性resize
  3. NLP之BoWNLTK:自然语言处理中常用的技术——词袋法Bow、NLTK库
  4. pthread 线程退出时自动释放资源
  5. GeneralUpdate20220323里程碑版本发布
  6. Postgresql快速写入\/读取大量数据(.net)
  7. android studio vfs,Android Studio:尝试呈现XML布局的InvalidVirtualFileAccessException
  8. Smarty学习笔记(二)
  9. [转]解决xampp无法启动apache的问题
  10. Java面试题300道
  11. Drawio添加自定义图形工具箱
  12. OCR文字识别开源网址
  13. php怎么使用sendcloud,PHP开发之SendCloud发送邮件知几何
  14. 错误解决:There is no screen to be resumed matching
  15. 资源网站模板Emlog程序zytheme模板
  16. 【DBCA -SILENT】静默安装之rac数据库安装
  17. 马氏距离进行离群值检测
  18. kmp算法,小试牛刀
  19. 黑客技术论坛为什么越来越少了?
  20. FPGA IP核 串口实验 signaltap

热门文章

  1. 双网卡绑定--实现负载冗余
  2. sql serevr中脚本导出
  3. 二本学医还是学计算机,二本医学院毕业的医学生,最后都去了哪里?看完莫名心酸!...
  4. html5模板 制作,优秀的H5作品是如何炼成的?模板制作详解!
  5. 仪表自定义刻度值_汇总丨工业仪表知识大全和选型参考
  6. Python+OpenCV:训练级联分类器(Cascade Classifier Training)
  7. 织物印花疵点专用术语大全
  8. 多多客DOODOOKE 1.x升级2.x指南
  9. SylixOS中AARCH64跳转表实现原理
  10. 【Java学习笔记之二十六】深入理解Java匿名内部类