大家好,我是阿辰。

PS:(这里跟读者说一下,以后本公众号推文更新时间段是13:00~14:00,默认是13:00

之前有粉丝让我爬取网上热搜话题,根据粉丝的这个提议,我想到了爬取不同平台的热搜话题并做成了一个:全网实时热搜话题『跑马灯』可视化

特点:实时可视化浏览

这里的热搜数据来源主要是:微博知乎,选择这两个平台的目的:1.用户流量大、2.直接的热搜数据Api接口。

先看一下效果:

动图版:

1

获取数据

1.采集微博数据

微博的热搜数据Api接口如下:

https://s.weibo.com/top/summary/

网页分析

先看一下网页源码

数据列表在id为pl_top_realtimehot中,接着往下找tbody,tr是热点数据的列表,每一个tr中都有a标签,a标签中有热点标题和对应热点链接。

url = "https://s.weibo.com/top/summary/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:85.0) Gecko/20100101 Firefox/85.0","Host": "s.weibo.com"
}
r = requests.get(url, headers=headers)
soup = bs(r.text, "lxml")
div = soup.find("div", {"id": "pl_top_realtimehot"}).find("tbody")
tr_tags = div.find_all("tr")

通过请求并对其进行提取网页源代码中的热搜数据(这里使用了BeautifulSoup库去解析网页源代码)

完整代码

###爬取微博热搜
def get_weibo():url = "https://s.weibo.com/top/summary/"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:85.0) Gecko/20100101 Firefox/85.0","Host": "s.weibo.com"}r = requests.get(url, headers=headers)soup = bs(r.text, "lxml")div = soup.find("div", {"id": "pl_top_realtimehot"}).find("tbody")tr_tags = div.find_all("tr")# 为数据保存做准备hot_text = []hot_link = []for tr in tr_tags:a = tr.find("a")hot_text.append(a.text)# 获取链接hot_link.append("https://s.weibo.com" + a.get("href"))return hot_text, hot_link

将爬取微博热搜数据代码封装成函数get_weibo,方便可视化代码进行调用,其中的hot_text是热点标题,hot_link是热点的链接

2.采集知乎数据

知乎热搜api接口如下:

https://api.zhihu.com/topstory/hot-list?limit=10&reverse_order=0

提取数据

这里直接返回的就是json数据,因此不需要进行网页分析,只需要知道json数据中,热搜标题和对应的热搜标题链接的key即可

数据在data里面,每一条数据的热搜标题和链接都在target下,热搜标题是title,热搜标题链接是url

###爬取知乎热搜数据
def get_zhihu():headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0'}url = "https://api.zhihu.com/topstory/hot-list?limit=10&reverse_order=0"text = requests.get(url, headers=headers).json()# 为数据保存做准备hot_text = []hot_link = []for i in text['data']:hot_text.append(i['target']['title'])hot_link.append(i['target']['url'])return hot_text,hot_link

同样的,将爬取知乎热搜数据代码封装成函数get_zhihu,方便可视化代码进行调用,其中的hot_text是热点标题,hot_link是热点的链接

2

Flask后端

为了将采集和可视化网页结合,这里选择使用Flask框架去搭建网站。

跳转网页

#进入页面
@app.route('/')
def index():return render_template('view.html')

制作API接口,方便获取数据并返回Json数据

###获取微博和知乎热搜数据
@app.route('/getdata')
def alldata():wb_t, wb_u = get_weibo()zh_t, zh_u = get_zhihu()t = []u = []for i in range(0,len(wb_t)):t.append(wb_t[i])u.append(wb_u[i])for i in range(0,len(zh_t)):t.append(zh_t[i])u.append(zh_u[i])res = {}res['title'] = tres['url'] = ureturn Response(json.dumps(res), mimetype='application/json')

为了方便大家直接运行,不需要改ip,这里就使用默认的本机ip(小伙伴拿到源码后直接运行就行),端口是80

if __name__ == "__main__":"""初始化,debug=True"""app.run(host='127.0.0.1', port=80,debug=True)

3

跑马灯可视化展示

这里是使用html网页制作的跑马灯滚动效果,核心代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="../static/js/jquery-2.1.4.min.js"></script><title>全网实时热搜话题-李运辰(公众号:Python研究者)</title><style>a{text-decoration: none;}.f1{color:"red"; }
</style>
</head>
<body>
<div id="textdata"></div>
<!--获取微博和知乎热搜数据--><script type="text/javascript">function getdata(){$.ajax({type: 'GET',url: "http://127.0.0.1/getdata",dataType: 'json',success: function(data){}}});}setInterval("getdata()","15000");//1000表示1秒

这里设置了15秒采集一次数据(实现了实时效果

4

启动

直接运行main.py文件

然后在浏览器访问

http://127.0.0.1

接着等待几秒就出现跑马灯可视化效果

gif动图版:

5

小结

本文也是应粉丝要求,爬取热搜话题,最后我制作出来了实时热搜『跑马灯』可视化效果。

特点:实时可视化浏览

最后说一声:原创不易,求给个赞、在看、评论

如果大家对本文代码源码感兴趣,公众号后台回复:热搜跑马灯,获取完整代码!

推荐阅读

有读者让我爬逼乎,是我大意了...

爬虫+可视化|爬取「奔跑吧」全系列嘉宾名单,并进行可视化分析

粉丝让我爬取热搜话题,结果做成了实时热搜『跑马灯』可视化相关推荐

  1. python爬取抖音用户数据的单位是_爬取并分析一下B站的最热视频排行榜,看看大家都喜欢看什么视频...

    前言 现在大家的生活中,已经越来越离不开B站了,2020年的第一季度,B站月活跃用户达到了1.72亿,日活跃用户也已经突破了5000万个用户.源源不断的流量让B站的up主们也是粉丝数目不断暴涨,百万粉 ...

  2. 运用Python——爬取网易云歌单的全部歌曲热评_爬虫的简单应用

    导航 ·运用Python--爬虫_网易云音乐热评 ·运用Python--游戏_四子棋_劳拉下棋 文章目录 导航 1.展示截图 2.代码 3.分析 常量的定义.界面设计 依次爬取歌曲信息 创建表格 爬取 ...

  3. python爬取知乎话题广场_知乎一共有多少个话题?

    上图可知,它是通过请求POST接口来取得知乎话题数据,接口信息: 其中topic_id指大分类下的id,offset是指偏移量,指每次执行next方法加载的子话题数量,hash_id可以为空我们暂时忽 ...

  4. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

  5. 用Python爬取B站弹幕并做成词云

    用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...

  6. Python爬取10529条《三十而已》热评,看看大家都说了些啥!

    继<隐秘的角落>后,又一部"爆款剧"--<三十而已>获得了口碑收视双丰收,王漫妮.顾佳.钟晓芹三个女主角的故事线频频登上微博热搜.<三十而已>于 ...

  7. Python爬取10529条《三十而已》热评,看看大家都说了些啥

    <三十而已>剧照    来源:互联网 继<隐秘的角落>后,又一部"爆款剧"--<三十而已>获得了口碑收视双丰收,王漫妮.顾佳.钟晓芹三个女主角的 ...

  8. 我和关注我的1w个粉丝“合影”啦–爬取上万个粉丝的数据并进行数据可视化分析,收获满满

    前言:从1k到1w粉的感悟 拖更了好多好多天的一万粉博文终于来啦! 还记得我在几个月达到1k粉丝的时候立下的flag,当时还以为没戏来着,没想到这么快就一万粉了!(万分感谢!!! 过去的近半年的时间真 ...

  9. python爬虫微博粉丝数据_Scrapy 爬取新浪微博数据分析男女粉丝数量

    通过之前爬取新浪微博发现,无论通过http://m.weibo.cn这里,还是http://weibo.cn这里,都没办法获取全部粉丝数据 那如果我想分析一个明星的男女粉丝数据怎么办,比如想知道某明星 ...

最新文章

  1. Windows、WSL 与 Linux 的性能对比
  2. Excel公式扫盲——SUMPRODUCT 函数
  3. Struts1.2+Spring2.5+Hibernate3.2框架搭建(十五)
  4. JS - JSON对象与JSON字符串相互转换的几种方法
  5. 分布式存储绝不简单 —— UCan下午茶-武汉站纪实
  6. windows 线程核心内容
  7. Java学习资料(一)——Java书籍
  8. SVO2安装,编译和运行q
  9. linux分析rna-seq,RNA-seq 分析流程(一)linux部分
  10. 高速公路计算机网络安全,计算机网络安全技术在高速公路收费网络的应用
  11. 小熊的人生回忆(七)
  12. super-csv文档的部分翻译及基本使用
  13. R语言学习笔记(二)——回归分析
  14. vue/JS实现输入框失焦
  15. 因安装搜狗输入法而引发的一系列惨案
  16. 我平时整理的一个生成机器码的类(转载)
  17. WMS设计开发方法及选购思路
  18. 传众安保险约1亿美元投资轻松筹,疏远阿里,倒向腾讯?
  19. java-编写简单的编辑器
  20. iMeta:哈佛刘洋彧等基于物种组合预测菌群结构的深度学习方法(全文翻译,PPT,中英视频)...

热门文章

  1. 祝福考研的兄弟姐妹们!
  2. dede(织梦)待审核定更插件
  3. 如何去反编译一个ipa包
  4. springboot配置datasource连接与mapper.xml文件位置
  5. 公历转农历的python实现
  6. 计算机网络技术单招职业能力测试,单招职业能力测试内容.doc
  7. 常见的五种排序,冒泡排序,选择排序,插入排序,并归排序,快速排序
  8. 浅谈C++的函数重载
  9. Docker启动tomcat容器部署java web应用详细过程
  10. 2020年末的一些职业规划思考