Python爬取数据并实现可视化代码解析


Posted in Python onAugust 12, 2020

这次主要是爬了京东上一双鞋的相关评论:将数据保存到excel中并可视化展示相应的信息

主要的python代码如下:

文件1

#将excel中的数据进行读取分析
import openpyxl
import matplotlib.pyplot as pit #数据统计用的
wk=openpyxl.load_workbook('销售数据.xlsx')
sheet=wk.active #获取活动表
#获取最大行数和最大列数
rows=sheet.max_row
cols=sheet.max_column
lst=[] #用于存储鞋子码数
for i in range (2,rows+1):
  size=sheet.cell(i,3).value
  lst.append(size)
#以上已经将excel中的数据读取完毕
#一下操作就你行统计不同码数的数量
'''python中有一个数据结构叫做字典,使用鞋码做key,使用销售数量做value'''
dic_size={}
for item in lst:
  dic_size[item]=0

for item in lst:
  for size in dic_size:
    #遍历字典
    if item==size:
      dic_size[size]+=1
      break
for item in dic_size:
  print(item,dic_size[item])
#弄成百分比的形式
lst_total=[]
for item in dic_size:
  lst_total.append([item,dic_size[item],dic_size[item]/160*1.0])

#接下来进行数据的可视化(进行画饼操作)
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')

文件2

#所涉及到的是requests和openpyxl数据的存储和数据的清洗以及统计然后就是matplotlib进行数据的可视化
#静态数据点击element中点击发现在html中,服务器已经渲染好的内容,直接发给浏览器,浏览器解释执行,
#动态数据:如果点击下一页。我们的地址栏(加后缀但是前面的地址栏没变也算)(也可以点击2和3页)没有发生任何变化说明是动态数据,说明我们的数据是后来被渲染到html中的。他的数据根本不在html中的。
#动态查看network然后用的url是network里面的headers
#安装第三方模块输入cmd之后pip install 加名字例如requests
import requests
import re
import time
import json
import openpyxl #用于操作 excel文件的
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}#创建头部信息
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, headers=headers)
  s=resp.text.replace('fetchJSON_comment98(','')#进行替换操作。获取到所需要的相应的json,也就是去掉前后没用的东西
  s=s.replace(');','')
  json_data=json.loads(s)#进行数据json转换
  return json_data

#获取最大页数
def get_max_page(productId):
  dis_data=get_comments(productId,0)#调用刚才写的函数进行向服务器的访问请求,获取字典数据
  return dis_data['maxPage']#获取他的最大页数。每一页都有最大页数

#进行数据提取
def get_info(productId):
  max_page=get_max_page(productId)
  lst=[]#用于存储提取到的商品数据
  for page in range(1,max_page+1):
    #获取没页的商品评论
    comments=get_comments(productId,page)
    comm_list=comments['comments']#根据comnents获取到评论的列表(每页有10条评论)
    #遍历评论列表,获取其中的相应的数据
    for item in comm_list:
      #每条评论分别是一字典。在继续通过key来获取值
      content=item['content']
      color=item['productColor']
      size=item['productSize']
      lst.append([content,color,size])#将每条评论添加到列表当中
    time.sleep(3)#防止被京东封ip进行一个时间延迟。防止访问次数太频繁
  save(lst)

def save(lst):
  #把爬取到的数据进行存储,保存到excel中
  wk=openpyxl.Workbook()#用于创建工作簿对象
  sheet=wk.active #获取活动表(一个工作簿有三个表)
  #遍历列表将数据添加到excel中。列表中的一条数据在表中是一行
  biaotou='评论','颜色','大小'
  sheet.append(biaotou)
  for item in lst:
    sheet.append(item)
  #将excel保存到磁盘上
  wk.save('销售数据.xlsx')


if __name__=='__main__':
  productId='66749071789'
  get_info(productId)
  print("ok")

实现的效果如下:

Python爬取数据并实现可视化代码解析

Python爬取数据并实现可视化代码解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跨平台python异步回调机制实现和使用方法
Nov 26 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
python 读取文件并把矩阵转成numpy的两种方法
Feb 12 Python
Python学习笔记之While循环用法分析
Aug 14 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
python-for x in range的用法(注意要点、细节)
May 10 Python
Django操作cookie的实现
May 26 Python
浅析Python中的套接字编程
Jun 22 Python
Python编程源码报错解决方法总结经验分享
Oct 05 Python
Python下载网易云歌单歌曲的示例代码
Aug 12 #Python
Python爬取12306车次信息代码详解
Aug 12 #Python
Python读取xlsx数据生成图标代码实例
Aug 12 #Python
Idea安装python显示无SDK问题解决方案
Aug 12 #Python
Python selenium如何打包静态网页并下载
Aug 12 #Python
Python selenium爬取微信公众号文章代码详解
Aug 12 #Python
PyQt5 QDockWidget控件应用详解
Aug 12 #Python
You might like
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
详解AngularJS 模态对话框
2016/04/07 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
python 搜索大文件的实例代码
2019/07/08 Python
Python简易版停车管理系统
2019/08/12 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
外语专业毕业生自我评价分享
2013/10/05 职场文书
营销总经理岗位职责
2014/02/02 职场文书
公司承诺书格式
2014/05/21 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
写景作文评语集锦
2014/12/25 职场文书
销售工作决心书
2015/02/04 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
出生证明范本
2015/06/15 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
JavaScript的Set数据结构详解
2022/02/18 Javascript
阿里云日志过滤器配置日志服务
2022/04/09 Servers