文章目录

  • 爬取微博实时热搜数据可视化分析
    • 一、爬取数据
      • 1.1 Spider主要函数
      • 1.2 根据微博一分钟更新一次的状态进行爬虫
    • 二、可视化
      • 2.1 利用轮播图加柱状图进行可视化

爬取微博实时热搜数据可视化分析

如今微博实时更新速度非常快,基于它每分钟更新一次热搜的情况,每分钟爬取一次信息,查看实时热搜的变动。

from fake_useragent import UserAgent # 反爬请求头
from bs4 import BeautifulSoup # BS4爬虫
from datetime import datetime # 时间处理模块
import time # 时间模块
import csv  # csv模块
import requests # 爬取数据
import schedule # 定时调度模块
import pandas as pd # 数据处理

一、爬取数据

1.1 Spider主要函数

def main():url = 'https://s.weibo.com/top/summary?cate=realtimehot&sudaref=s.weibo.com&display=0&retcode=6102'agents = UserAgent()headers = {'User-Agent': agents.random}response = requests.get(url, headers=headers) # 响应数据top_search_dict = {} # 建立字典保存数据soup = BeautifulSoup(response.text, 'html.parser') # 解析数据items = soup.find_all('td', class_='td-02') # 获取微博热搜数据for item in items:title = item.find('a').text.strip() # 获取标题counts = item.find_all('span')for i in counts:top_search_dict[title] = i.get_text() # 获取热搜量top_search_dict['date'] = datetime.now().strftime('%Y/%m/%d %H:%M') # 获取时间with open('weibo_search.csv', 'a', encoding='gbk', newline='') as f: # 存入csv文件w = csv.DictWriter(f, top_search_dict.keys())w.writeheader()w.writerow(top_search_dict)

1.2 根据微博一分钟更新一次的状态进行爬虫

# 自动运行爬虫一分钟一次
def auto_spider(stop_time):schedule.every(1).minutes.do(main) # 设置每分钟进行一次调度while True:if datetime.now().strftime('%H:%M') <= stop_time: # 设置时间点判定执行调度时长schedule.run_pending() # 执行所有调度time.sleep(60) # 休眠1分钟else:break
if __name__ == '__main__':auto_spider(stop_time='11:08')

二、可视化

可以看到每分钟的热搜数量很多,所以我们选择Top20来看。

df = pd.read_csv('weibo_search.csv', encoding='gbk', header=None)
df.loc[0,:][:20]

2.1 利用轮播图加柱状图进行可视化

from pyecharts.charts import Bar, Timeline, Grid # Bar和时间轴模块
from pyecharts.globals import ThemeType # 图片背景模块
import pyecharts.options as opts # 配置项def draw_timeline():df = pd.read_csv('weibo_search.csv', encoding='gbk', header=None)# 时间轴t = Timeline(init_opts=opts.InitOpts(width='1024px', height='600px', theme=ThemeType.MACARONS))for i in range(len(df)):if i % 2 == 0: # 根据读取文件格式进行索引判断bar = (Bar(init_opts=opts.InitOpts(width='500px', height='600px')).add_xaxis(list(df.loc[i, :][:20][::-1])) # 配置x轴数据.add_yaxis('微博热度', # y轴数据标题list(df.loc[i + 1, :][:20][::-1]) # y轴数据).set_global_opts(title_opts=opts.TitleOpts(title=df.loc[i + 1, 50], # 设置标题为时间点pos_right='5%', # 标题位置pos_bottom='15%',# 标题字体配置title_textstyle_opts=opts.TextStyleOpts(font_family='KaiTi', # 字体格式font_size=24, # 字体大小color='#14d8ff' # 字体颜色)),xaxis_opts=opts.AxisOpts(splitline_opts=opts.LineStyleOpts(is_show=True, opacity=1), # x轴分割线配置axislabel_opts=opts.LabelOpts(color='#33a3dc'), # x轴标签配置),yaxis_opts=opts.AxisOpts(splitline_opts=opts.LineStyleOpts(is_show=True, opacity=1),axislabel_opts=opts.LabelOpts(color='#33a3dc'),)).set_series_opts(label_opts=opts.LabelOpts(position='right', color='#ff1435') # 配置标签项位置和颜色).reversal_axis() # 坐标轴翻转)grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_left='25%', pos_top='8%')))else:continuet.add(grid, '{}'.format(df.loc[i + 1, 50])) # 将Bar添加至时间轴组件中# 配置Timeline参数t.add_schema(play_interval=500, # 播放速度/间隔(单位:ms)is_auto_play=True, # 是否自动播放is_loop_play=True, # 是否循环播放is_timeline_show=False,# 是否显示timeline组件)return t.render_notebook() # 输出为网页draw_timeline()


(代码运行完之后为此图为动态图)

爬取微博实时热搜数据可视化分析相关推荐

  1. python 爬取微博实时热搜,并存入数据库实例

    刚学python没几天,打算用paython爬去微博热搜数据试验一下,但是发现微博热搜是动态数据,网页源码并不能直接获取想要的数据,network里也并不能找到相关内容,这时重新查看网页源码,发现有类 ...

  2. python热搜排行功能_简单几行代码用Python爬取微博的热搜榜

    简单几行代码用Python爬取微博的热搜榜 想要实时的看微博热搜 但是又不想去微博网站看!怎么办呢?其实很简单! 我们学了这个requests_html 这个库之后 就更加的简单了! 小编只用了短短的 ...

  3. 爬取猫眼电影影评,数据可视化分析源代码运行说明

    欢迎关注微信公众号:简说Python 账号:xksnh888 关注回复:1024,可以领取精选编程学习电子书籍. 爬取猫眼电影影评,数据可视化分析 项目地址 :github项目地址 之前一直有同学说不 ...

  4. 【Python】爬取中国历史票房榜,可视化分析

    [Python]爬取中国历史票房榜,可视化分析 最近电影<哪吒之魔童转世>票房已经超过<流浪地球>,<复联4>.升到中国内地票房第二位.就好有哪些电影排进了历史票房 ...

  5. 【Python】我用python爬取一月份微博热搜数据来分析人们对新型肺炎的关注程度变化

    2020年1月23日,睡醒一觉,发现新型肺炎的影响正在以肉眼可见的速度扩散,已经放假的我只能宅在家里,不敢随便外出.实在闲得无聊,我便拿起了技术人的工具,利用python,用数据来简单分析一波新型肺炎 ...

  6. python爬取“微博”移动端评论数据

    目的 爬取微博移动端的评论数据(如下图),然后将数据保存到.txt文件和.xlsl文件中. 实现过程 实现的方法很简单,就是模拟浏览器发送ajax请求,然后获取后端传过来的json数据. 一.找到获取 ...

  7. Python Ajax爬取微博个人博客数据

    文章目录 利用request.pyquery.xlwings等库抓取微博个人博客数据. (1)抓取[目标网址](https://m.weibo.cn/u/2830678474) (2)用 Chrome ...

  8. 爬虫实例3:Python实时爬取新浪热搜榜

    因为了解到新浪热搜榜每分钟都会更新,所以写的是每分钟爬取一次的死循环,按照日期为格式创建路径,将 爬取的信息按照时间顺序 输出到excel. 步骤: 1.在浏览器中,用F12分析热搜榜页面的html标 ...

  9. 【Python案例】爬取某bo热搜榜并做动态数据展示

    目录 前言 正文 基本开发环境 相关模块的使用 需求数据来源分析 代码实现 动态数据展示 前言 嗨嗨,大家好啊 最近有没有在某bo吃瓜啊,今年的瓜好像不少哦,近期的李某某事件真的令我大为震惊

最新文章

  1. 遗传算法对于神经网络的优生优育
  2. Java读取Excel文件并将之写入数据库操作
  3. php面向对象项目,PHP的面向对象编程:开发大型PHP项目的方法(一)
  4. 设计模式之UML类图
  5. spark简介(大数据技术)
  6. PXF webapp is inaccessible but tomcat is up
  7. 基于matlab 的图像重建,基于Matlab的2D-FFT图像重建软件的设计
  8. Nginx学习总结(7)——Nginx配置HTTPS 服务器
  9. atitit.html5 拼图游戏的解决之道.
  10. 韦东山《嵌入式Linux应用开发完全手册》配套视频教程
  11. CentOS 7 yum update 报错 Failed to connect to 2404:6800:4012::200e: Network is unreachable
  12. Java 集合之SortedSet和SortedMap
  13. CSS实现强制不换行、自动换行、强制换行的css代码
  14. activity工作流学习
  15. python 隐藏进程_运行进程隐藏Python
  16. 以谦逊的心态对待每一个人
  17. Windows Server 2008下Microsoft Office Excel 不能访问文件解决方法
  18. gdal影像镶嵌并裁剪
  19. docker nginx_proxy 反向代理
  20. 如何在安卓手机上使用远程桌面 RD Client?

热门文章

  1. 101003计算机应用基础闭,2017/2018学年第一学期2017级 《信息处理技术》《计算机应用基础》课程期末考试安排表...
  2. C++实现九进制转化十进制
  3. java 读取文件夹下的所有文件和文件夹名
  4. pytorch的函数中的dilation参数的作用
  5. C# 委托高级应用----线程——创建无阻塞的异步调用(一)
  6. ChatGPT 将如何毁灭世界 ?
  7. java long初始化_Java变量的初始化
  8. python项目回顾
  9. react配置二级路由
  10. 视频教程-赵强老师:Oracle数据库从10g到11g(5)过程、函数和触发器-Oracle