【python 读取抖音/小红书/微博今日头条/百度热点等平台的热点新闻】

轻松获取全网热点,Python助你掌握实时舆情

在信息爆炸的时代,抖音、小红书、微博、今日头条和百度热点等平台每天都会产生海量热门内容。无论是品牌营销、竞品分析还是舆情监控,掌握这些热点新闻至关重要。利用Python的强大爬虫技术,可以自动化抓取各平台的热点数据,实时追踪话题趋势,挖掘用户关注焦点。

通过Python的高效爬取和数据分析能力,不仅能快速获取结构化热点信息,还能结合自然语言处理(NLP)进行情感分析,洞察公众情绪变化。无论是企业决策、内容创作还是市场研究,这一技术都能提供精准的数据支持,让你在信息战中抢占先机!

代码

# pip install beautifulsoup4
import requests
import random
from typing import Optional, List, Dict
from bs4 import BeautifulSoup# 平台名称映射
PLATFORMS = [{"name": "微博", "zhiwei_id": "weibo", "tophub_id": "s.weibo.com"},{"name": "抖音", "zhiwei_id": "douyin", "tophub_id": "douyin.com"},{"name": "哔哩哔哩", "zhiwei_id": "bilibili", "tophub_id": "bilibili.com"},{"name": "今日头条", "zhiwei_id": "toutiao", "tophub_id": "toutiao.com"},{"name": "百度热点", "zhiwei_id": "baidu", "tophub_id": "baidu.com"},{"name": "小红书", "zhiwei_id": "little-red-book", "tophub_id": None},{"name": "快手", "zhiwei_id": "kuaishou", "tophub_id": None},{"name": "虎扑", "zhiwei_id": None, "tophub_id": "hupu.com"},{"name": "豆瓣小组", "zhiwei_id": None, "tophub_id": "douban.com"},{"name": "澎湃新闻", "zhiwei_id": None, "tophub_id": "thepaper.cn"},{"name": "知乎热榜", "zhiwei_id": "zhihu", "tophub_id": "zhihu.com"},
]# 知微数据支持的平台
ZHIWEI_PLATFORMS = [p["zhiwei_id"] for p in PLATFORMS if p["zhiwei_id"]]# tophub 支持的平台
TOPHUB_PLATFORMS = [p["tophub_id"] for p in PLATFORMS if p["tophub_id"]]def get_zhiwei_hotnews(platform: str) -> Optional[List[Dict]]:"""获取知微数据的热点数据参数 platform: 平台标识 (weibo, douyin, bilibili, toutiao, baidu, little-red-book, kuaishou, zhihu)返回格式: 列表数据,每个元素为热点条目字典,仅包含 name, rank, lastCount, url"""api_url = f"https://trends.zhiweidata.com/hotSearchTrend/search/longTimeInListSearch?type={platform}&sortType=realTime"  # noqa 501try:headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",  # noqa 501"Referer": "https://trends.zhiweidata.com/",}response = requests.get(api_url, headers=headers, timeout=10)response.raise_for_status()data = response.json()if data.get("state") and isinstance(data.get("data"), list):return [{"name": item.get("name", ""),"rank": item.get("rank", 0),"lastCount": item.get("lastCount", 0),"url": item.get("url", ""),}for item in data["data"]]return Noneexcept Exception as e:  # noqa 841return Nonedef get_tophub_hotnews(platform: str, cnt: int = 10) -> Optional[List[Dict]]:"""获取 tophub.today 的热点数据参数 platform: 平台名称(中文,如“微博”)参数 tophub_id: tophub.today 的平台标识(如 s.weibo.com, zhihu.com)参数 cnt: 返回的新闻数量返回格式: 列表数据,每个元素为热点条目字典,包含 name, rank, lastCount"""api_url = "https://tophub.today/"try:headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",  # noqa 501}response = requests.get(api_url, headers=headers, timeout=10)response.raise_for_status()soup = BeautifulSoup(response.text, "html.parser")platform_divs = soup.find_all("div", class_="cc-cd")for div in platform_divs:platform_span = div.find("div", class_="cc-cd-lb").find("span")if platform_span and platform_span.text.strip() == platform:news_items = div.find_all("div", class_="cc-cd-cb-ll")[:cnt]hotnews = []for item in news_items:rank = item.find("span", class_="s").text.strip()title = item.find("span", class_="t").text.strip()engagement = item.find("span", class_="e")last_count = engagement.text.strip() if engagement else "0"hotnews.append({"name": title,"rank": int(rank),"lastCount": last_count,"url": item.find("a")["href"] if item.find("a") else "",})return hotnewsreturn Noneexcept Exception as e:  # noqa 841return Nonedef get_vvhan_hotnews() -> Optional[List[Dict]]:"""获取 vvhan 的热点数据(作为备用)返回格式: [{"name": platform_name, "data": [...]}, ...]"""api_url = "https://api.vvhan.com/api/hotlist/all"try:response = requests.get(api_url, timeout=10)response.raise_for_status()data = response.json()if data.get("success") and isinstance(data.get("data"), list):return data["data"]return Noneexcept Exception as e:  # noqa 841return Nonedef get_platform_news(platform: str, cnt: int = 10) -> List[str]:"""获取指定平台的新闻标题,优先从知微数据获取,失败则从 tophub.today 获取,最后从 vvhan 获取参数 platform: 平台名称(中文,如“微博”)参数 cnt: 返回的新闻数量返回: 新闻标题列表(仅使用 name 字段)"""# 查找平台对应的知微数据标识和 tophub 标识platform_info = next((p for p in PLATFORMS if p["name"] == platform), None)if not platform_info:return []# 1. 优先尝试知微数据if platform_info["zhiwei_id"] in ZHIWEI_PLATFORMS:hotnews = get_zhiwei_hotnews(platform_info["zhiwei_id"])if hotnews:return [item.get("name", "") for item in hotnews[:cnt] if item.get("name")]# 2. 回退到 tophub.todayif platform_info["tophub_id"] in TOPHUB_PLATFORMS:hotnews = get_tophub_hotnews(platform, cnt)if hotnews:return [item.get("name", "") for item in hotnews[:cnt] if item.get("name")]# 3. 回退到 vvhan APIhotnews = get_vvhan_hotnews()if not hotnews:return []platform_data = next((pf["data"] for pf in hotnews if pf["name"] == platform), [])return [item["title"] for item in platform_data[:cnt]]def select_platform_topic(platform: str, cnt: int = 10) -> str:"""获取指定平台的新闻话题,并按排名加权随机选择一个话题。若无话题,返回默认话题。参数 platform: 平台名称(中文,如“微博”)参数 cnt: 最大返回的新闻数量返回: 选中的话题字符串"""topics = get_platform_news(platform, cnt)if not topics:topics = ["历史上的今天"]print(f"平台 {platform} 无法获取到热榜,接口暂时不可用,将使用默认话题。")# 加权随机选择:排名靠前的话题权重更高weights = [1 / (i + 1) ** 2 for i in range(len(topics))]selected_topic = random.choices(topics, weights=weights, k=1)[0]# 替换标题中的 | 为 ——selected_topic = selected_topic.replace("|", "——")return selected_topic
topics = get_platform_news("小红书", 50)
topics

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85356.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【1.3 MySQL知识库 - 轻松理解版】

🚀 MySQL知识库 - 轻松理解版 一、MySQL核心知识顺口溜 🎵 🎤 经典记忆口诀 MySQL数据库,InnoDB引擎强 ACID事务特性,隔离级别四档 索引加速查询,B树是主梁 主从复制备份,读写分离扛 锁机制防…

计算机网络期末速成 网络层 判断及单选题

判断题 路由器和链路层交换机都被称为分组交换机。路由器与链路层交换机间的根本区别是:路由器在网络层存储转发IP数据报,链路层交换机在链路层存储转发帧。 A. 对 B. 错 答案: 对 解析: 路由器和链路层交换机确实都是分组交换机,但工作层次不同。路由器…

代理 AI 时代的隐私重构:从边界控制到信任博弈

过去,我们将隐私等同于边界与权限控制,依赖墙壁、锁和规则构筑防线。而如今,随着代理 AI 深度介入生活,成为能感知、决策的自主实体,它不仅处理数据,更在重塑我们的数字形象与内在认知。在此背景下&#xf…

C++实现手写strstr函数

strstr 函数用于在主字符串中查找子字符串的首次出现位置,以下是高效的实现方案: KMP算法优化版本 #include <iostream> #include <string> #include <vector> using namespace std; // 计算KMP算法的部分匹配表(PMT) vector<int> getNext(const…

Linux操作系统网络服务模块一SSH带外管理概述

前言&#xff1a; 在复杂的网络运维环境中&#xff0c;​SSH带外管理&#xff08;Out-of-Band Management&#xff09;​​ 是确保系统高可用性的核心技术手段。区别于依赖业务网络的“带内管理”&#xff0c;带外管理通过独立物理通道​&#xff08;如专用管理网口或串…

org.springframework.cloud.gateway 组件解释

org.springframework.cloud.gateway 是 Spring Cloud 生态系统中的一个新一代的、功能强大的 API 网关。 1. 什么是 API 网关 (API Gateway)&#xff1f; 在讲解 Spring Cloud Gateway 之前&#xff0c;我们先要理解它扮演的角色——API 网关。 在一个微服务架构中&#xff0…

linux ollama 下载安装

linux ollama 下载安装 ollama 下载地址ollama 手动安装解决找不到命令的问题升级[gcc](https://so.csdn.net/so/search?qgcc&spm1001.2101.3001.7020)Centos7 停止维护之后 [升级gcc||找不到devtoolset-8-gcc* 问题解决方案](https://www.cnblogs.com/Jedi-Pz/p/18447117…

2025 渗透工具:【中国蚁剑】连接一句话MUA文件 远控虚拟机靶机

温馨提示&#xff1a; 本程序仅作为虚拟机测试环境使用&#xff0c;请勿用于任何不当用途。使用即表示您同意自行承担可能产生的所有责任。 一、场景复现 1、PhpMystudy软件启动网页模拟靶机 小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; 2、开启apache 3、…

Datawhale 网络爬虫技术入门第2次笔记

正则表达式 正则表达式&#xff08;Regular Expression&#xff09;&#xff0c;⼀种使⽤表达式的⽅式对字符串进⾏匹配的语法规则。 正则的语法&#xff1a;使⽤元字符进⾏排列组合来匹配字符串。 在线测试正则表达式&#xff1a;在线正则表达式测试OSCHINA.NET在线工具,os…

详解Redis的集群模式(主从复制、哨兵与Cluster)

一、主从复制 (Master-Slave Replication) 1. 基本概念 主从复制是Redis最简单的集群模式&#xff0c;由一个主节点(Master)和一个或多个从节点(Slave)组成。 2. 工作原理 数据同步&#xff1a;从节点启动时会向主节点发送SYNC命令&#xff0c;主节点执行BGSAVE生成RDB文件并…

如何使用 Airtest 对 Flutter 和 Unity 应用进行UI自动化测试

使用 Airtest 进行 Flutter/Unity UI 自动化测试终极指南 一、 核心原理&#xff1a;为什么 Airtest 能行&#xff1f; 要理解如何用&#xff0c;先要明白其原理。Airtest 采取了“两条腿走路”的策略&#xff0c;这正是它能通吃各种UI技术的关键。 第一条腿&#xff1a;基于…

河马剧场多部自制剧霸榜,短剧精品化战略持续推进

临近暑期&#xff0c;短剧市场热度逐渐攀升。近期&#xff0c;DataEye发布6月9日—6月15日微短剧热力榜显示河马剧场以8部作品占据TOP30近三分之一席位&#xff0c;前三名中更是占据2个席位&#xff0c;以题材多元化、用户覆盖广、数据爆发力强的特点引领行业风向。其中&#x…

幂级数 (0,R); R ;(R,+oo)

很好&#xff0c;我们现在来回答你问的这个问题&#xff1a; &#x1f7e0; 幂级数在收敛半径 R R R 以外会发生什么&#xff1f; 我们考虑一个一般形式的幂级数&#xff1a; ∑ n 0 ∞ a n ( x − x 0 ) n \sum_{n0}^{\infty} a_n (x - x_0)^n n0∑∞​an​(x−x0​)n 它的…

C#学习13——正则表达式

一、正则表达式 是一种匹配输入文本的模式&#xff0c;是由特殊字符组成&#xff0c;用于匹配字符串中的字符组合。 二、正则表达式有哪些&#xff1f; 1.Regex 类&#xff08;引入System.Text.RegularExpressions;&#xff09; Regex 类用于表示一个正则表达式。 1&#…

【Redis】持久化机制:RDB / AOF 的应用与场景

文章目录 Redis 持久化一、RDB1.1 说明1.2 触发机制手动触发自动触发 1.3 流程说明1.4 文件处理1.5 优缺点 & 适用场景 二、AOF2.1 说明2.2 使用 AOF2.3 命令写入2.4 文件同步2.5 重写机制2.6 启动时数据恢复2.7 优缺点 & 适用场景 三、不使用 AOF / RDB 的情况3.1 场景…

Python 企业级开发与DevOps实践

https://www.python.org/static/community_logos/python-logo-master-v3-TM.png 大型项目结构与设计模式 项目结构规范 text 复制 下载 enterprise_app/ ├── docs/ # 项目文档 ├── tests/ # 测试代码 │ ├── unit/ …

E结构体基础.go

前言&#xff1a;结构体是一种用户自定义的数据类型&#xff0c;它可以将多个不同类型的数据整合在一起&#xff0c;形成一个有机的整体。这就好比在现实生活中&#xff0c;我们有各种各样的物品&#xff0c;它们各自有不同的属性和用途&#xff0c;而结构体就像是一个收纳箱&a…

Spring @Autowired 依赖注入全解析

Autowired 是 Spring 框架中实现依赖注入的核心注解&#xff0c;其自动装配过程可分为以下步骤&#xff0c;结合了类型匹配、名称解析和容器协作机制&#xff1a; 1. 组件扫描与 Bean 定义注册 扫描阶段&#xff1a;Spring 容器启动时&#xff0c;通过 ComponentScan 或 XML 配…

将git的普通目录用idea初始化为maven项目

在 IntelliJ IDEA 中将一个已存在的 Git 目录初始化为 Maven 项目&#xff0c;可以通过以下步骤完成。这些步骤假设你已经有一个包含代码的 Git 仓库&#xff0c;并希望将其转换为 Maven 项目结构&#xff0c;以便更好地管理依赖和构建。 步骤 1&#xff1a;打开或导入 Git 仓库…

Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建

一、key 属性的核心作用 在 Vue 中,key是一个特殊的属性,主要用于协助 Vue 的虚拟 DOM(Virtual DOM)算法高效地更新实际 DOM。它的核心作用可以概括为: 唯一标识节点:为每个节点提供一个唯一的身份标识优化 Diff 算法:帮助 Vue 准确判断两个节点是否为同一节点(如for循…