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
9种python web 程序的部署方式小结
Jun 30 Python
Python中的zip函数使用示例
Jan 29 Python
Python实现的批量下载RFC文档
Mar 10 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
python爬虫要用到的库总结
Jul 28 Python
详解Python中第三方库Faker
Sep 25 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 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
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
任意位置显示html菜单
2007/02/01 Javascript
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
JavaScript中null与undefined分析
2009/07/25 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
Python API自动化框架总结
2019/11/12 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
化妆品促销方案
2014/02/24 职场文书
技术员岗位职责范本
2015/04/11 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js