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中Genarator函数用法分析
Apr 08 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
python实现用户答题功能
Jan 17 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
PyTorch中的Variable变量详解
Jan 07 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
python mock测试的示例
Oct 19 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php中数组首字符过滤功能代码
2012/07/31 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
Pandas的read_csv函数参数分析详解
2019/07/02 Python
python命令行工具Click快速掌握
2019/07/04 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
Python流程控制 if else实现解析
2019/09/02 Python
python通过链接抓取网站详解
2019/11/20 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
高三地理教学反思
2014/01/11 职场文书
咖啡书吧创业计划书
2014/01/13 职场文书
九年级科学教学反思
2014/01/29 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
解约证明模板
2015/06/19 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
MySQL创建表操作命令分享
2022/03/25 MySQL