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

这次主要是爬了京东上一双鞋的相关评论:将数据保存到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")

实现的效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

转自:https://monday.blog.csdn.net/article/details/51122637 一:使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发、测试并已经上线了,接…

纠正一个可能的错误翻译—交叉编译

交叉编译,是英文 Cross Compilation 的中文翻译。 下面摘自百度: 交叉编译是在一个平台上生成另一个平台上的可执行代码。 由于嵌入式设备的性能局限,往往不能通过本机编译得到所需软件的可执行程序。因此,以Linux为主机操作系统…

jar 退出run_Java终止线程的三种方式

停止一个线程通常意味着在线程处理任务完成之前停掉正在做的操作,也就是放弃当前的操作。在 Java 中有以下 3 种方法可以终止正在运行的线程:使用退出标志,使线程正常退出,也就是当 run() 方法完成后线程中止。使用 stop() 方法强…

【转】人工智能教程-前言

前言 大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科幻电影中的场景将成为现实,未来已来! 我很庆幸。十四年前就认定了人工智能专业&…

golang 包含 数组_Golang数组类型

数组数组是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度。1. 声明方法[32]byte //长度为32的数组[2*N] struct {x, y int32} //复杂类型数组[100]*float64 //指针数组[3][5]int //二维数组[2]…

【转】人工智能-1.1.1 什么是神经网络

1.1.1 什么是神经网络 什么是人工智能?通俗来讲,就是让机器能像人一样思考。这个无需解释太多,因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能? 从1956年夏季首次提出“人工智能…

【V4L2】学习资料

预备知识 V4L2,即Linux视频设备内核驱动。 参考文章 v4l2的学习建议和流程解析Linux V4L2学习高通msm-V4L2-Camera驱动浅析5-buffer00_video_decode (video decode):此内容为英伟达Jetson的Demo文档手册,有条件的可以结合Jetson的代码阅读…

解决margin塌陷的问题_解决margin塌陷与margin合并(margin)清除浮动问题

**1、margin塌陷**问题:垂直方向的父子关系的盒子使用不当会产生margin塌陷。给子级设置margin-top时,他不会相对父级一起动,只有他的margin超过父级的margin时,才会生效,但会带着父级一起动(作者总结,官方…

【转】人工智能-1.2.2 神经网络是如何进行预测的

上一篇文章中我们已经知道了如何将数据输入到神经网络中。那么神经网络是如何根据这些数据进行预测的呢?我们将一张图片输入到神经网络中,神经网络是如何预测这张图中是否有猫的呢?? 这个预测的过程其实只是基于一个简单的公式&a…

js 根据公历日期 算出农历_一招教会你公历换算成农历,要不要试试看

古代的历法是干支纪年,俗称农历或阴历,现在我们都统一采用公历的阿拉伯数字纪年。因此,就存在着一个历法的换算问题。当然,我们可以查历书就直接知道了,但是这个方法并不一定方便。现在告诉大家一个简单的口诀&#xf…

【转】C# HMAC Sha1 生成签字

最近因为工作的需要,开始接触腾讯云,在调用CMQ服务时发现官方提供的SDK只有基于.Net Framework的,而现在做.net项目的谁不是用.net core啊。好吧,既然没有官方的SDK,只能自己写服务来调用Api了。遇到的第一个麻烦点的事…

去哪查阅RFC文档?

什么是RFC文档 RFC。 Request For Comments(RFC),是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。目前RFC文件是由Internet Society(ISOC)赞助发行。基本的互联…

【转】Power Platform(简介)

Power Platform 系统通过允许用户执行以下三个关键操作来帮助他们推动业务发展:使用 Power BI 从数据中获得见解,通过使用 PowerApps 构建的应用程序来推动智能业务流程,以及使用 Power Automate 自动执行这些流程。 这些解决方案彼此配合协作…

云原生的本质_CloudNative

[TOC]阿里云原生技术公开课第1章:云原生课本节课程要点云原生技术发展历程(为什么要学习这门课)课程简介与预备知识(这门课到底教什么)云原生的定义与技术要点(本节正式内容)一、为什么要开设云原生技术公开课?1. 云原生技术发展简史首先从第一个问题进行…

【Python】打包程序后运行程序出现 ModuleNotFoundError: No module named ‘PySide6‘

问题描述 在python虚拟环境中使用PySide6开发桌面程序,执行打包命令: pyinstaller.exe -F -w .\main.py 打包程序完成后,双击运行,弹出对话框提示: ModuleNotFoundError: No module named ‘PySide6’ 原因 虚拟环境…

【转】人工智能-1.2.1 如何将数据输入到神经网络中

1.2.1 如何将数据输入到神经网络中 通过对前面文章的学习,我们已经知道神经网络可以实现真正的人工智能。本小节我会进行详细地讲解,让大家彻底地弄懂神经网络。在仅仅只学完一篇文章后,你肯定依然感觉朦胧,这是正常的&#xff0…

php对接钉钉_php实现钉钉业务报警机器人

使用场景,服务器报异常错误,想要及时收到报警信息并处理环境介绍,本博使用yaf框架php,仅仅提供思路,参考,具体根据自己实际情况进行编写1,每十分钟执行一次任务脚本# 每10分钟执行一次的任务if …

【转】30 岁前实现财务自由的人,都做对了哪些事?

不光是30岁,凡是能实现财务自由的,都有一个特点,这个特点叫做: 做庄思维。 在出现近现代法制社会之前,财富的原始积累最快的方式总结起来说到底都是“抢”和“骗”,然后既得利益者为了保护自己的胜利果实…

protobuf2和3同时安装_在 Ubuntu 上安装 Protobuf 3 的教程详解

什么时候需要安装如果使用 protoc 命令,遇到 Protoc not found,表示未安装。或者,执行时出现错误:This parser only recognizes "proto2",则表示不是3.0版。安装过程及可能遇到的问题安装指令详细介绍请参考…

【转】WPF中关于样式和模板的区别

1.WPF样式 类似于Web应用程序中的CSS&#xff0c;在WPF中可以为控件定义统一的样式(Style)。样式属于资源的一种&#xff0c;例如为Button定义统一的背景颜色和字体&#xff1a; <Window.Resources> <Style TargetType"Button"> <Setter Property&quo…