作者:叶庭云

来源:凹凸数据

本文介绍了可以实现定时执行任务的schedule模块,利用它实现定时爬取微博热搜数据,保存到CSV文件里。

讲解pyehcarts绘制基本时间轮播图,最后利用pyehcarts实现数据的动态图可视化。

微博热搜

以下开始干货实战之旅  ↓

schedule模块定时执行任务

python中有一个轻量级的定时任务调度的库:schedule。他可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。

# 安装
pip install schedule -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
import schedule
import timedef run():print("I'm doing something...")schedule.every(10).minutes.do(run)    # 每隔十分钟执行一次任务
schedule.every().hour.do(run)         # 每隔一小时执行一次任务
schedule.every().day.at("10:30").do(run)  # 每天的10:30执行一次任务
schedule.every().monday.do(run)  # 每周一的这个时候执行一次任务
schedule.every().wednesday.at("13:15").do(run) # 每周三13:15执行一次任务while True:schedule.run_pending()  # run_pending:运行所有可以运行的任务

爬取微博热搜数据

这样的网页结构可以用 pd.read_html() 方法来爬取数据

# -*- coding: UTF-8 -*-
"""
@File    :微博热搜榜.py
@Author  :叶庭云
@Date    :2020/9/18 15:01
"""
import schedule
import pandas as pd
from datetime import datetime
import logginglogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')
count = 0def get_content():global count   # 全局变量countprint('----------- 正在爬取数据 -------------')url = 'https://s.weibo.com/top/summary?cate=realtimehot&sudaref=s.weibo.com&display=0&retcode=6102'df = pd.read_html(url)[0][1:11][['序号', '关键词']]   # 获取热搜前10time_ = datetime.now().strftime("%Y/%m/%d %H:%M")     # 获取当前时间df['序号'] = df['序号'].apply(int)df['热度'] = df['关键词'].str.split('  ', expand=True)[1]df['关键词'] = df['关键词'].str.split('  ', expand=True)[0]df['时间'] = [time_] * len(df['序号'])if count == 0:df.to_csv('datas.csv', mode='a+', index=False)count += 1else:df.to_csv('datas.csv', mode='a+', index=False, header=False)# 定时爬虫
schedule.every(1).minutes.do(get_content)while True:schedule.run_pending()

微博热搜一般是1分钟更新一次,所以再给代码加个定时器即可。让程序跑一会儿,微博热搜变动数据就保存到了CSV文件里。

pyehcarts动态图可视化

基本时间轮播图

from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.faker import Faker
from pyecharts.globals import CurrentConfig, ThemeTypeCurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
tl = Timeline(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
for i in range(2015, 2020):bar = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts("商店{}年商品销售额".format(i))))tl.add(bar, "{}年".format(i))
tl.render("timeline_multi_axis.html")

运行效果如下:

from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType, CurrentConfigCurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
tl = Timeline(init_opts=opts.InitOpts(theme=ThemeType.DARK))
for i in range(2015, 2020):bar = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values(), label_opts=opts.LabelOpts(position="right")).add_yaxis("商家B", Faker.values(), label_opts=opts.LabelOpts(position="right")).reversal_axis().set_global_opts(title_opts=opts.TitleOpts("Timeline-Bar-Reversal (时间: {} 年)".format(i))))tl.add(bar, "{}年".format(i))
tl.render("timeline_bar_reversal.html")

运行效果如下:

微博热搜动态图

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline, Grid
from pyecharts.globals import ThemeType, CurrentConfigCurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
df = pd.read_csv('datas.csv')
# print(df.info())
t = Timeline(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))  # 定制主题
for i in range(34):bar = (Bar().add_xaxis(list(df['关键词'][i*10: i*10+10][::-1]))         # x轴数据.add_yaxis('热度', list(df['热度'][i*10: i*10+10][::-1]))   # y轴数据.reversal_axis()     # 翻转.set_global_opts(    # 全局配置项title_opts=opts.TitleOpts(  # 标题配置项title=f"{list(df['时间'])[i*10]}",pos_right="5%", pos_bottom="15%",title_textstyle_opts=opts.TextStyleOpts(font_family='KaiTi', font_size=24, color='#FF1493')),xaxis_opts=opts.AxisOpts(   # x轴配置项splitline_opts=opts.SplitLineOpts(is_show=True),),yaxis_opts=opts.AxisOpts(   # y轴配置项splitline_opts=opts.SplitLineOpts(is_show=True),axislabel_opts=opts.LabelOpts(color='#DC143C'))).set_series_opts(    # 系列配置项label_opts=opts.LabelOpts(  # 标签配置position="right", color='#9400D3')))grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_left="24%")))t.add(grid, "")t.add_schema(play_interval=100,          # 轮播速度is_timeline_show=False,     # 是否显示 timeline 组件is_auto_play=True,          # 是否自动播放)t.render('时间轮播图.html')

运行结果如下:

↑ 演示图

如果大家对我分享的 Python定时爬虫-爬取微博热搜数据 -pyecharts动态图展示 感兴趣,欢迎转发、在看、点赞三连!

●Python数据可视化教程实战!

●取数,取数,取个屁啊!

后台回复“入群”即可加入小z数据干货交流群

Python定时爬取微博热搜+pyecharts动态图展示相关推荐

  1. c#使用正则表达式获取TR中的多个TD_使用python+BeautifulSoup爬取微博热搜榜

    本文将介绍基于Python使用BeautifulSoup爬取微博热搜榜的实现过程 1.首先导入需要使用的库 from bs4 import BeautifulSoup from urllib.requ ...

  2. 使用 Nodejs 实现定时爬取微博热搜榜

    The summer is coming " 我知道,那些夏天,就像青春一样回不来.- 宋冬野 青春是回不来了,倒是要准备渡过在西安的第三个夏天了. 看完本文的收获 ctrl + c ctr ...

  3. python每天定时爬取微博热搜并保存到本地(表格、数据库)

    微博热搜网站:https://s.weibo.com/top/summary/ 就是这个样子: pyquery提取: 保险起见headers里加个UA- from pyquery import PyQ ...

  4. Python爬虫爬取微博热搜保存为 Markdown 文件

    微博热搜榜python爬虫,仅供学习交流 源码及注释: # -*- coding=UTF-8 -*- #!usr/bin/env pythonimport os import time import ...

  5. Python爬取微博热搜并定时发送邮件,及时了解最新动态!

    一.前言 微博热搜榜每天都会更新一些新鲜事,但是自己处于各种原因,肯定不能时刻关注着微博,为了与时代接轨,接受最新资讯,就寻思着用Python写个定时爬取微博热搜的并且发送QQ邮件的程序,这样每天可以 ...

  6. 利用 Python 自动抓取微博热搜,并定时发送至邮箱

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来. ...

  7. python 爬关键词,Python爬虫实战:爬取微博热搜关键词

    一.爬取微博热搜关键词需要的第三方库 1.requests 2.BeautifulSoup 美味汤 3.worldcloud 词云 4.jieba 中文分词 5.matplotlib 绘图 二.爬取微 ...

  8. 爬取新笔趣阁排行并保存到mysql_python+selenium爬取微博热搜存入Mysql的实现方法...

    最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站link 下面我们来分析怎么实现 使用的库 import requests from selenium.webdr ...

  9. python爬取微博热搜数据并保存!

    主要用到requests和bf4两个库将获得的信息保存在d://hotsearch.txt下importrequests;importbs4mylist=[]r=requests.get(ur- 很多 ...

  10. Python爬取微博热搜数据之炫酷可视化

    可视化展示 看完记得点个赞哟 微博炫酷可视化音乐组合版来了! 项目介绍 背景 现阶段,微博.抖音.快手.哗哩哗哩.微信公众号已经成为不少年轻人必备的"生活神器".在21世纪的今天, ...

最新文章

  1. 计算缺失的元素 java_计算包含缺失值的相关系数
  2. PermGen space
  3. Python数据分析教程:Numpy 中不得不知的4个重要函数
  4. 标准化工作及相关组织
  5. Ubuntu 12.04下搭建Web服务器 (MySQL+PHP+Apache)(转)
  6. Wix学习整理(6)——安装快捷方式
  7. 别人的Linux私房菜(19)认识与分析日志文件
  8. dolphin.php 视频,DolphinPHP V1.0.4发布
  9. 软件定义网络:昨天今天明天
  10. 通用计算机dsp采用,一种基于FPGA+DSP的通用飞控计算机平台设计
  11. 闪存flash基础原理
  12. 计算机专业英文面试,计算机专业面试英文自我介绍
  13. 【征文通知】PRCV 2021 论文征集
  14. 计算机系统重装微pe步骤
  15. SFP光模块接口说明
  16. 什么是等保(信息安全等级保护)?
  17. 被巨头“封杀”后,中国移动互联网企业如何加速出海
  18. C++(常函数、常对象)
  19. Markdown与LATEX
  20. fect:基于面板数据的因果推断(下)

热门文章

  1. doip 源码_DoIP技术(一)
  2. 机器学习中分类和聚类的区别
  3. 利用html表格制作个人简历
  4. pcfg 自然语言处理_自然语言处理:原理简明教程09-句法分析,语义分析和篇章分析...
  5. c语言错误码2,平方根2.我做过C语言的一些错误
  6. 吃鸡 反作弊服务器未运行,绝地求生反作弊服务(BE)修复工具
  7. 微信小程序——简单的售后服务单
  8. matlab卷积动画实现
  9. 调洪演算双辅助线法计算程序(带石门坎水电站算例)
  10. win10修改计算机密码,教你如何更改win10系统电脑密码