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

简介: 之前有粉丝让我爬取网上热搜话题,根据粉丝的这个提议,我想到了爬取不同平台的热搜话题并做成了一个:**全网实时热搜话题『****跑马灯****』可视化**。特点:**实时**、**可视化浏览**这里的热搜数据来源主要是:**微博**和**知乎**,选择这两个平台的目的:1.用户流量大、2.直接的热搜数据Api接口。

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

特点:实时可视化浏览

这里的热搜数据来源主要是:微博知乎,选择这两个平台的目的: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'] = t
    res['url'] = u
    return 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、小结

为了大家方便学习,辰哥已经把本文的完整源码上传,需要的在同名公号回复:热搜跑马灯

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

特点:实时可视化浏览

相关文章
|
SQL 前端开发 搜索推荐
淘天业务技术2023年度热门文章盘点
淘天业务技术2023年度热门文章盘点
505 4
|
Java
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
本文介绍了如何使用IDEA(IntelliJ IDEA)创建一个新的Java项目,并运行一个简单的Java程序输出"Hello Word"。文章详细展示了创建项目的步骤,包括选择JDK版本、设置项目名称和路径、创建包和类,以及编写和运行代码。最后,还展示了如何通过IDEA的运行功能来执行程序并查看输出结果。
1853 4
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
|
7月前
|
人工智能 自然语言处理 API
AI Ping 限时开放:GLM-4.7 与 MiniMax M2.1 免费体验,赋能真实工程场景
AI Ping平台上线GLM-4.7与MiniMax M2.1国产大模型,限时免费调用,支持高吞吐、低延迟的工程级AI应用。助力开发者实现编码自动化、Agent工作流构建等真实业务落地,推动AI从“能用”迈向“好用”。
842 0
|
监控 安全 Cloud Native
海外泼天流量丨浅谈全球化技术架构
全球化是对技术架构的终极挑战,面临的不仅仅是技术的问题,而是包含了经济、文化等多因素差异的用户关系问题。积极借助遍布全球的云计算基础设施和云原生的架构设计原则,将能更加高效的构建高可用的全球化技术架构,支持全球业务的持续增长。
681 127
|
12月前
|
存储 数据库 数据安全/隐私保护
抖音ck提取工具,快手小红书微博哔哩哔哩cookie提取登录软件,python框架
这个框架提供了完整的Cookie提取功能,支持抖音、快手、小红书、微博和哔哩哔哩平台。主要特点包括
|
JSON 搜索推荐 数据挖掘
Temu商品列表数据接口(Temu API系列)
Temu作为新兴跨境电商平台,为全球卖家和消费者搭建便捷交易桥梁。通过商品列表数据接口,开发者、分析师可获取商品名称、价格、销量等信息,助力市场调研、商品管理和数据分析。接口支持HTTP GET请求,参数包括品类、价格区间、排序方式等,响应格式为JSON。Python示例代码展示了如何调用API获取数据,应用场景涵盖竞争对手分析、选品参考、销售预测及个性化推荐系统开发等。
4573 24
|
人工智能 自然语言处理 JavaScript
Aider:27.6K Star!这个终端AI编程神器能用语音改代码,自动生成Git记录并提交,接入DeepSeek斩获编程基准最高分
Aider 是一款基于命令行的开源 AI 编程助手,支持多种编程语言和主流 LLM,可自动完成代码修改、Git 提交及语音交互。
3145 1
|
人工智能 弹性计算 网络安全
一键玩转CoAI:AI工程变现新模式
CoAI是一款强大的AI管理软件,支持多种大模型如OpenAI、通义千问等,具备丰富的UI设计、多模型管理、弹性计费等功能,既适合个人使用也支持企业级部署,帮助用户轻松管理和商业化AI能力。
|
前端开发 小程序 JavaScript
面试官:px、em、rem、vw、rpx 之间有什么区别?
面试官:px、em、rem、vw、rpx 之间有什么区别?
562 0
|
负载均衡 网络协议 安全
DNS解析中的Anycast技术:原理与优势
【9月更文挑战第7天】在互联网体系中,域名系统(DNS)将域名转换为IP地址,但网络规模的扩张使DNS解析面临高效、稳定与安全挑战。Anycast技术应运而生,通过将同一IP地址分配给多个地理分布的服务器,并依据网络状况自动选择最近且负载低的服务器响应查询请求,提升了DNS解析速度与效率,实现负载均衡,缓解DDoS攻击,增强系统高可用性。此技术利用动态路由协议如BGP实现,未来在网络发展中将扮演重要角色。
1444 0