当前位置: 首页 > news >正文

【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

相关文章:

  • C++ Primer Plus 9.2.7 mutable
  • Windows11下搭建Raspberry Pi Pico编译环境
  • AutoHotkey 脚本生成器:一键打开网页到指定位置(v2版本:自定义位置)
  • C语言——枚举
  • 基于python的web系统界面登录
  • 前端开发面试题总结-vue2框架篇(四)
  • 利用Java进行验证码的实现——字母数字验证码
  • FPGA基础 -- Verilog 数据流建模
  • WPF入门 #1 WPF布局基础、WPF样式基础、WPF控件模板、WPF数据模板
  • Python笔记1
  • 影刀rpa-3步获取社区信息
  • Dify动手实战教程(入门-猜病、哄哄模拟器)
  • singlefligt使用方法和源码解读
  • MySQL 索引和select优化
  • vuex中的辅助函数怎样使用
  • P7 QT项目----会学天气预报
  • 初识树及二叉树
  • 18.字符串函数
  • 【Redis】持久化机制:RDB / AOF 的应用与场景
  • 48-Oracle CDB下的SID-实例名-服务名
  • java设计网站/百度网盘登录入口网页版
  • 云南省文山州网站建设/推广计划怎么做推广是什么
  • 类网站建设/四川seo多少钱
  • 门户网站开发 论文/如何用html制作一个网页
  • pbootcms模板下载/seo优化方式
  • 什么网站做兼职最好/太原seo团队