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网络爬虫项目:内容提取器的定义
Oct 25 Python
Python 3.x 连接数据库示例(pymysql 方式)
Jan 19 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
python-opencv颜色提取分割方法
Dec 08 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
Django发送邮件功能实例详解
Sep 02 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
JS获取父节点方法
2009/08/20 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
python实现低通滤波器代码
2020/02/26 Python
Django使用rest_framework写出API
2020/05/21 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
HTML5 视频播放(video),JavaScript控制视频的实例代码
2018/10/08 HTML / CSS
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
大学军训感言300字
2014/03/09 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
文明寝室标语
2014/06/13 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
会计求职自荐信范文
2015/03/04 职场文书