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编写vim插件的简单示例
Apr 17 Python
python自动裁剪图像代码分享
Nov 25 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
python实现翻译word表格小程序
Feb 27 Python
简单的命令查看安装的python版本号
Aug 28 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
详解pandas apply 并行处理的几种方法
Feb 24 Python
baselines示例程序train_cartpole.py的ImportError
May 20 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的autoLoad自动加载机制
2012/09/27 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
xml有哪些解析技术?区别是什么
2016/04/26 面试题
大学优秀班集体申报材料
2014/05/23 职场文书
销售提升方案
2014/06/07 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
爱国主义电影观后感
2015/06/18 职场文书
教育读书笔记
2015/07/02 职场文书
校运会通讯稿
2015/07/18 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python