以下内容为本人原创,欢迎大家观看学习,禁止用于商业及非法用途,谢谢合作!

·作者:@Yhen
·原文网站:CSDN
·原文链接:https://blog.csdn.net/Yhen1/article/details/105931210

转载请说明此出处,侵权必究!谢谢合作!

大噶好!我是Yhen 算了下,我接触python已经将近两个月了,而我写博客也有一个月的时间了。我的粉丝数量从0增加到了现在的30,访问量也已经突破了3000,这些对于大佬们可能不算什么,但是对于我这种无名小辈,这样的数据我已经很欣慰了。感谢大家的一路陪伴和支持!大家的一个点赞,一个关注,都是我创作的极大动力,有你们的支持,我会更加有动力去尽我最大的努力创作更多有趣有价值的文章!谢谢大家的支持!

这么有意义的日子,所以我决定抓取我写博客以来每天的博客访问量,绘制成柱状图,回顾下这一路上大家的陪伴!

最后会把源码给大家

文章目录

  • 一.前期准备
  • 二.思路分析
  • 三. 代码实现
  • 四.源代码
  • 五.【往期文章回顾】

一.前期准备

今天会用到两个第三方库

requests     必备爬虫库
pyecharts    今天的主角 强大的绘图库

二.思路分析

今天的首要目标是把我博客中的访问量数据从这个列表中爬取下来

https://mp.csdn.net/console/dataWatch/analysis/allarticle



那么怎么爬取下来呢?

我们首先要判断这个页面是静态页面还是动态页面

我们先在控制台看看这个网址栏url对应的响应是不是就是网页的源代码
首先F12打开控制台,找到点击doc ,点击第一个接口。点到response,看看里面的数据


然后再点击Elements,和网页的源代码做个比较

可以发现网址栏上得到的响应的并不是我们的源代码

所以我们可以得知,这是一个动态页面

那要得到动态页面的数据,就不能用简单的数据提取的方法了
有以下的方法 :
一. 用selenium获取网页的源代码数据,然后进行数据解析提取
二.分析网页的json数据,找到想要数据的接口

selenium我之前在讲爬取海贼王图片的时候已经讲过了,所以这次就来讲讲找数据接口的方法

对selenium用法感兴趣的同学可以去看看我之前的文章
【selenium爬虫】Yhen手把手带你用selenium自动化爬虫爬取海贼王动漫图片

那么要怎么找到这个接口呢?
  首先,我要获取的是4月6日(我第一篇博客发表的日期)至5月4日的访问量数据,而页面默认是显示近7天的

我们要先在数据页面打开检查工具
然后点击日历按钮
点击4月6,再点击5月5

这样就可以得到我的全部历史数据啦

然后再来看看右边network里面的XHR的数据
找到一个all_article?page=1的数据接口

可以看到里面有很多的数据,逐个点开后,看到第0个接口pdate对应的是日期5月4,而viewcount对应的就是5月4号的访问量337.

由此可知这个就是我们要找的接口啦。

但是这个只有第一页的

我点击第二页的按钮
于是多了一个all_article?page=2的接口
我点进去,发现这就是第二页数据的接口!


而这个接口的url的在这里

而这两页url的最大区别在于page后面的参数

所以我们只需要设置一个循环,让它输出1,2,并代入到url中去,就可以得到两页的数据啦

得到访问量的数据后,再用pyecharts绘图就完成啦!

思路分析好了,接下来就是用代码来实现啦
准备起飞啦!安全带系好哦!

三. 代码实现

首先是导包操作
  因为我们今天要画的是一个柱状图
所以我们要从pyecharts中导入柱状图Bar

# 导入爬虫库
import  requests
# 导入引擎
from pyecharts import options
# 导入柱状图
from  pyecharts.charts import Bar

接下来就是对刚刚的接口发送请求啦

刚刚说到,我们要获取两页的数据
所以我们设置一个for 循环 ,让他输出1,2,并赋值到page
然后用.format代入到url中去,这样就可以构造出两页的url 了

接下来带着请求头:浏览器类型和cookies对接口发送请求
PS:这里的cookies请代入自己的cookies

# 设置一个循环,输出1,2
for page in range(1,3):# 数据观星的网址url ='https://blog-console-api.csdn.net/v1/data/all_article?page={}&size=20&start=1586102400&end=1588608000&type=date&action=down'.format(page)# 请求头:用户信息 浏览器类型headers ={'cookie':自己账号的cookies,'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'}res =requests.get(url , headers=headers).json()

因为我们这个接口数据是json数据,所以要用.json()

我们来看看能否正常得到数据

OK。没毛病

接下来就是从这些数据提取我们的访问量数据啦
我们再来看看那这个页面


先不要晕,下面我带你们去剖析它
我们反过来看一下

我们要的日期和访问量数据分别在一个字典的pdate和viewcount键下
这个字典的外层是一个列表
这个列表的外层又是一个字典,对应的键是list
而这个字典的外层还是一个字典,对应的键是data

那么

我们就可以通过取接口数据中的data键和list键取出字典里的数据

然后对列表进行遍历
  再通过pdate和viewcount键就可以得到我们要的日期和访问量数据啦!

接下来看看代码

#通过data键和list键取值
a =(res['data']['list'])
# 对列表进行循环遍历for x in a :# 通过viewcount键取的访问量的值viewcount =x['viewcount']# 通过pdate取得日期的值pdate =x['pdate']print(pdate)print(viewcount)

我们来看看打印结果
是可以成功得到我们想要的数据的

但是有没有发现这个日期是反过来的?而且我只想要日期中月日的数据,不需要年份

那么接下来对数据进行列表的反转和字符串的切片

# 对列表进行循环遍历for x in a :# 通过viewcount键取的访问量的值viewcount =x['viewcount']# 通过pdate取得日期的值 通过字符串的切片,取后5个数据pdate =x['pdate'][5:]# 把访问量数据添加到listlist.append(viewcount)# 把日期的数据添加到list2list2.append(pdate)fangwen =list[::-1]
date =list2[::-1]

首先新建两个列表用于储存年份和访问量数据(注意必须要在最外部的for循环上面新建,如下图所示)

然后通过字符串的切片[5:]取到日期中的月日数据

接下来把日期和访问量分别装进list2和list
然后通过[::-1]进行列表的反转,并分别赋值给fangwen 和date列表

我们来打印下美化后的数据

没有毛病吧!成功得到我们想要的效果啦!

下面就是激动人心的时刻:绘制柱状图

下面是一些绘图的配置,除了数据需要自己自定义外,其他都是固定的操作

大家根据自己的实际修改即可

最后通过render渲染成html文件

c =Bar()
# xaxis_rotate
c.add_xaxis(date)c.add_yaxis('访问量',fangwen)# 添加主标题和副标题
c.set_global_opts(title_opts=options.TitleOpts(title='Yhen访问量柱状图',subtitle='2020年04月06日-2020年05月04日'))c.render('Yhen访问量柱状图.html')
print('图形绘制完毕')

我们运行一下

运行结束后,生成了一个Yhen访问量柱状图.html ,右键点击,
找到open in Browser ,选择想要用来打开的浏览器,然后点击


看看打开后的效果

登登登登!是不是很神奇!
就这样简简单单的几行代码就生成了一个这个美观的柱状图
而且还是交互式的,当我鼠标移到某一根柱子时,它会自动给我反馈详细信息!

但是有没有发现
x轴上的数据是隔3天显示的

那么有没有办法让日期全部显示出来呢?
当然是有的

它之所以没有全部显示出来,是因为横着放不下全部的日期数据,所以它自动进行了一个处理

那么,我们只需要改变x轴数据的倾斜程度,让它斜着显示,不就可以全部显示出来了么?

具体怎么操作呢?
咱也不知道【摊手】
但是我可以查官方文档啊哈哈哈


文档中说到,可以通过这一行代码实现x轴的旋转
rotate=-15 这个是旋转角度的设置
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15))

文档url:
http://gallery.pyecharts.org/#/Bar/bar_rotate_xaxis_label?id=pyecharts-%e4%bb%a3%e7%a0%81-%e6%95%88%e6%9e%9c

我在绘图配置添加了配置,设置了旋转角度为-40

# 添加主标题和副标题 ,设置x轴旋转角度为-40度
c.set_global_opts(title_opts=options.TitleOpts(title='Yhen访问量柱状图',subtitle='2020年04月06日-2020年05月04日'),xaxis_opts=options.AxisOpts(axislabel_opts=options.LabelOpts(rotate=-40)))

再来看看现在的生成的统计图

完美啦!日期全都显示出来啦!

撒花完结!
大家如果觉得我写的还可以的话,可以点个赞鼓励下小弟嘛,点个关注就更好啦!你们的支持是我创作的最大动力!
谢谢大家

最后把源码给大家

四.源代码

扫码关注我的微信公众号Yhen杂文铺后台回复关键词访问量数据可视化即可获取哦.

五.【往期文章回顾】

Yhen带你趣味入门Python①—Windows下Python下载及安装

【python热搜爬虫+定时发送邮件操作①】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

【python微博爬虫+定时发送邮件操作②】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

【爬虫+数据可视化】Yhen手把手带你爬取CSDN博客访问量数据并绘制成柱状图

【爬虫】Yhen手把手带你爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具

【爬虫】Yhen手把手带你用python爬小说网站,全网打尽,想看就看!(这可能会是你看过最详细的教程)

【实用小技巧】用python自动判断并删除目录下的空文件夹(超优雅)

【爬虫+数据库操作】Yhen手把手带你用pandas将爬取的股票信息存入数据库!

【selenium爬虫】
Yhen手把手带你用selenium自动化爬虫爬取海贼王动漫图片

【爬虫】秀才不出门,天下事尽知。你也能做到!Yhen手把手带你打造每日新闻资讯速达小工具。

【爬虫】Yhen手把手带你用python爬取知乎大佬热门文章

【爬虫】Yhen手把手教你爬取表情包,让你成为斗图界最靓的仔

【前端】学过一天的HTML+CSS后,能做出什么有趣的项目?

  希望大家能够喜欢这篇文章
  如果可以的话,可以点个赞鼓励下嘛?加个关注更好呦!
  我是Yhen,下次见~

【爬虫+数据可视化】Python爬取CSDN博客访问量数据并绘制成柱状图相关推荐

  1. python爬虫爬取csdn博客专家所有博客内容

    python爬虫爬取csdn博客专家所有博客内容: 全部过程采取自动识别与抓取,抓取结果是将一个博主的所有 文章存放在以其名字命名的文件内,代码如下 #coding:utf-8import urlli ...

  2. 大屏监控系统实战(6)-爬虫初探:爬取CSDN博客之星年度总评选投票统计数据

    一.介绍 我们先来做个简单的,我们的目标是爬取CSDN博客之星年度总评选的首页信息. 首页的地址:http://m234140.nofollow.ax.mvote.cn/wxvote/43ced329 ...

  3. Python 爬取51cto博客标题浏览量、评论量、收藏

    介绍 提到爬虫,互联网的朋友应该都不陌生,现在使用Python爬取网站数据是非常常见的手段,好多朋友都是爬取豆瓣信息为案例,我不想重复,就使用了爬取51cto博客网站信息为案例,这里以我的博客页面为教 ...

  4. Python爬虫小实践:使用BeautifulSoup+Request爬取CSDN博客的个人基本信息

    好久都没有动Python了,自从在网上买了<Python网络数据采集>这本书之后一直没有时间写自己的小的Demo,今天再网络上无意中看见 http://www.cnblogs.com/mf ...

  5. Python爬虫:通过爬取CSDN博客信息,学习lxml库与XPath语法

    目录 lxml库 lxml基本用法 解析XML文件 解析HTML文件 XPath 什么是XPath XPath语法 XPath实战 选取某节点的所有子孙节点 选取某节点的所有子节点 通过属性选取某节点 ...

  6. python实战系列之爬取CSDN博客之星2020年度排名情况(附源码)

    前言 CSDN2020年度博客之星马上就要收尾了,你知道自己关注的博主排名实时变化吗?谁是你心目中的博客之星,让我们爬取各位博主的排名及各位博主的一些个人信息. 代码 直接上代码 # -*- codi ...

  7. C/C++ | Qt 实现爬虫功能,爬取CSDN博客文章

    话不多说,先看程序运行截图: 注意: 本人没有看过爬虫相关的书籍,第一次写这种程序,这个程序是半屌子的,原理很简单,没有学习过爬虫的朋友,也可以写. 程序思路如下: 1.下载要爬网站的页面. 2.用正 ...

  8. 用selenium爬取csdn博客文章,并用4种方法提取数据

    为了方便susu学习selenium,下面代码用selenium爬取博客文章的标题和时间,并用selenium自带的解析,etree,bs4,scrapy框架自带的selector等4种方式来解析网页 ...

  9. 使用selenium爬取csdn博客

    爬取的基本原理是:使用代码控制浏览器,让浏览器加载出页面后,把页面的源代码抓取下来 这篇博客的思路是: 基本环境搭建 核心代码与解释 工具类的代码与解释 一. 基本环境搭建 这里建议使用豆瓣源进行安装 ...

最新文章

  1. 序列模式挖掘、频繁项集与频繁序列
  2. bcc Reference Guide 中文翻译
  3. python中的logging记录日志_[ Python入门教程 ] Python中日志记录模块logging使用实例...
  4. Caffe部署中的几个train-test-solver-prototxt-deploy等说明 (一)
  5. PL/SQL的快捷键设置
  6. 边缘端手势识别:AI 交互的正确打开方式
  7. hdu 3339 In Action 背包+flyod
  8. Error:scalac: Error: scala.collection.immutable.$colon$colon.tl$1()Lscala/collection/immutable/List;
  9. 螺丝刀还能悬浮起来?
  10. 王道机试指南读后总结-1
  11. 【语法】NSMutableArray可变数组
  12. SpringSecurity系列(五) Spring Security 权限设计
  13. Linux与云计算——第二阶段Linux服务器架设 第七章:网站WEB服务器架设—日志分析平台...
  14. hcfax2e伺服驱动器说明书_SD伺服驱动器说明书
  15. ac3168无线网卡驱动下载_REALTEK芯片无线网卡最新驱动!支持到10.15
  16. 8年Android开发教你如何写简历,社招面试心得
  17. 【论文解读】持续学习三种情形
  18. 利用OneDrive网盘建站
  19. pip install下载速度太慢
  20. Hive in、exists 和 left semi join

热门文章

  1. 手表频率测试软件,石英钟表测试仪是一款测量石英钟的灵活的工具
  2. python画简便的图片-用python简单处理图片(5):图像直方图
  3. matlab课表编排程序实例,编排课程表的一点心得
  4. 四足机器人|机器狗|仿生机器人|多足机器人|Adams仿真|Simulink仿真|基于CPG的四足机器人Simulink与Adams虚拟样机|源码可直接执行|绝对干货!需要资料及指导的可以联系我!
  5. Ubuntu暂时无法解析域名“cn.archive.ubuntu.com”
  6. 设计模式:建造模式(组装电脑)
  7. 台式计算机国标码,在计算机中,国标码是属于什么码?
  8. Wifi_认证 、关联 和 四次握手(WPA/WPA2)
  9. 【已解决】Python安装TensorFlow报错“Consider adding this directory to PATH or, if you prefer to suppress this
  10. 【Pytorch实战4】基于CIFAR10数据集训练一个分类器