news 2026/8/14 1:38:17

Python爬虫实战:从抖音、B站、微博抓取热点数据的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python爬虫实战:从抖音、B站、微博抓取热点数据的完整指南

1. 项目缘起:为什么我们需要自己动手抓热点?

做内容、搞运营、玩营销,甚至就是自己写点东西,最头疼的问题之一就是:今天该聊点啥?热点在哪?大家都在看什么?很多人第一反应是去刷各种资讯App,或者看别人整理好的榜单。但说实话,这种“二手信息”有几个问题:一是滞后,等你看到时,可能已经凉了半截;二是同质化,大家看的都是同一份榜单,内容撞车严重;三是信息茧房,平台推给你的,未必是全网真正在发酵的东西。

所以,我一直有个习惯,也是我认为最核心的实战技能:直接从源头拿数据。抖音、B站、微博,这三个平台基本覆盖了图文、短视频、中长视频和社区讨论的绝大部分声量。它们的“热点”,就是当下中文互联网最真实的脉搏。与其依赖别人的分析,不如自己动手,写点代码,把热榜、热搜、热门话题的数据抓下来,自己分析。这个过程不仅能让你第一时间拿到最“烫手”的信息,更重要的是,你能在抓取和分析的过程中,真正理解一个话题是怎么火起来的——是某个关键词的搜索量暴增?还是某个视频的互动数据(点赞、评论、转发)出现了异常波动?抑或是某个博主的评论区突然“炸了”?

这就是“AI Skills”系列想聊的。这里的“AI”不是狭义的人工智能模型,而是指一种更广义的“自动化智能”(Automated Intelligence)能力,即用程序化的手段,去完成那些重复、繁琐但又有规律可循的信息获取与处理工作。掌握这项技能,你就不再是信息的被动接收者,而是主动的狩猎者和分析师。今天这第一篇,我们就从最基础的开始:如何用技术手段,相对稳定、合规地获取抖音、B站、微博的平台热点数据。我会把原理、方法、踩过的坑以及一些取巧的小技巧,都摊开来聊聊。

2. 核心思路:热点数据从哪里来?

在动手写代码之前,我们必须先搞清楚,平台的热点数据到底藏在哪里。不同的平台,数据开放程度和获取方式天差地别,但无外乎以下几种途径:

2.1 官方API:最理想但限制最多的渠道

理论上,最规范、最稳定的方式是通过平台官方提供的开放API。比如微博有开放平台,B站有开放接口。通过API获取数据,格式规范,数据相对准确,且理论上符合平台规则。

然而,现实很骨感:

  1. 申请门槛高:个人开发者申请API权限,尤其是需要读取热搜、热榜这类敏感数据的接口,审核非常严格,往往需要企业资质、详细的用途说明,甚至需要签订协议。
  2. 调用限制严:即使申请下来,也会有严格的频率限制(QPS)、每日调用上限。对于高频监控需求,这点配额可能几分钟就用完了。
  3. 数据不完整:官方API返回的数据字段可能有限,或者不包含某些你关心的深层数据(如话题下的实时新增博文列表)。
  4. 变更频繁:API版本会更新,接口地址或参数可能发生变化,需要持续维护。

所以,对于个人或小团队快速启动项目,完全依赖官方API往往不是最优解,它更适合作为数据验证和补充的来源。

2.2 网页端公开数据:最常用且灵活的突破口

这是目前最主流、最实用的方法。平台的热榜、热搜榜、热门话题等页面,本身就是向所有用户公开的。我们的目标就是模拟一个浏览器,去访问这些页面,然后把我们需要的数据从HTML代码里“抠”出来。这个过程,就是常说的“网络爬虫”或“数据抓取”。

它的优势很明显:

  • 无需权限:你作为一个普通用户能看到的,理论上就能抓取。
  • 数据直观:看到的就是最终呈现给用户的样子,包含排名、标题、热度指标(如“沸”、“热”、“爆”图标)、实时讨论量等。
  • 灵活性高:可以根据页面结构的变化,相对快速地调整抓取规则。

但挑战也同样突出:

  • 反爬机制:平台为了阻止自动化抓取,会设置重重障碍,包括但不限于:请求头校验、Cookie验证、IP频率限制、人机验证(滑块、点选)、数据动态加载(Ajax)、字体反爬等。
  • 页面结构变动:前端页面随时可能改版,一旦HTML结构或CSS类名变了,你的抓取脚本就可能立刻失效。
  • 法律与合规风险:需要严格遵守平台的robots.txt协议(虽然很多平台对此限制很严),并注意不要对服务器造成过大压力,避免涉及个人隐私等敏感数据。

2.3 移动端App数据:数据更丰富但难度升级

很多平台在App端展示的数据维度和更新速度可能优于网页端。获取App数据通常需要通过“抓包”技术,拦截和分析手机App与服务器之间的网络通信数据。

这种方式能拿到什么?

  • 更原始的JSON格式数据,结构清晰,无需解析HTML。
  • 可能包含网页端不展示的隐藏字段或更详细的数据。
  • 一些通过API调用但未在网页端直接暴露的数据接口。

它的难度在于:

  • 需要抓包工具:如Charles、Fiddler、mitmproxy等,配置过程有一定门槛。
  • HTTPS证书问题:需要给手机安装抓包工具的根证书,以解密HTTPS流量。
  • 签名与加密:越来越多的App对请求参数和返回数据进行了加密或签名,逆向分析难度极大,且可能涉及法律风险。
  • 设备与环境模拟:可能需要模拟特定的设备型号、系统版本、App版本号等信息。

对于初学者,我强烈建议从网页端公开数据入手。这是理解整个数据获取流程的基础,技术栈相对通用,遇到的问题和解决方案也更有普适性。等网页端玩熟了,再根据实际需求考虑是否要挑战App端。

3. 实战准备:工具选型与环境搭建

工欲善其事,必先利其器。我们不需要多么高深的技术栈,一套经典的Python组合拳就足够了。下面是我经过多次实战后,固定下来的一套工具链,兼顾了效率与稳定性。

3.1 核心武器库:Python + Requests + BeautifulSoup

  • Python 3.8+:我们的主力编程语言,生态丰富,上手快。
  • Requests:用于发送HTTP请求的库,简单易用,功能强大。它是我们与目标网站服务器“对话”的工具。
  • BeautifulSoup4 (bs4):用于解析HTML和XML文档的库。它能把一堆杂乱的HTML标签,变成一棵结构清晰的树,让我们能像查字典一样,轻松定位和提取想要的数据。
  • lxml:一个解析器,通常作为BeautifulSoup的后端,速度比Python自带的html.parser快很多。

安装命令(使用pip):

pip install requests beautifulsoup4 lxml

3.2 进阶装备:应对反爬与动态内容

如果目标网站的数据是直接写在HTML里的,用上面的组合就够了。但现代网站大量使用JavaScript动态加载数据,这时候就需要能执行JS的工具。

  • Selenium:自动化测试工具,可以控制真实的浏览器(如Chrome、Firefox)进行操作。它能完美执行页面里的JS,拿到渲染后的完整HTML。缺点是速度慢,资源占用高。
  • Playwright:新一代的浏览器自动化库,由微软开发,比Selenium更现代,API更优雅,速度也更快。它支持无头模式(不显示浏览器界面),非常适合爬虫场景。
  • Pyppeteer:一个Python版本的Puppeteer(Node.js库),也是控制Chrome/Chromium的。Playwright可以看作是它的加强版和多浏览器支持版。

我的选择建议:对于抖音、B站、微博的热榜页面,优先尝试用Requests直接获取。因为这类核心榜单为了SEO和首屏加载速度,很可能将关键数据直接放在初始HTML中(即“服务器端渲染”)。如果Requests拿到的HTML里找不到数据,再考虑使用PlaywrightSelenium

安装Playwright:

pip install playwright playwright install chromium # 安装Chromium浏览器驱动

3.3 辅助工具:让抓取更稳健

  • Fake-Useragent:随机生成不同的浏览器User-Agent字符串。这是最简单的反反爬措施之一,让你的请求看起来更像来自不同的真实浏览器。
  • 代理IP池:如果你的抓取频率较高,很容易被目标网站封禁IP。使用代理IP池可以轮换IP地址,分散请求。你可以使用一些免费的代理IP网站(但稳定性差),或者购买付费的代理服务。
  • 定时任务库(如APScheduler):用于定时执行抓取脚本,实现自动化监控。

注意:使用代理IP和自动化工具时,务必控制请求频率,遵守目标网站的robots.txt规则(如果有的话),避免给对方服务器造成过大压力。我们的目的是获取数据,不是攻击网站。

4. 分平台击破:抖音、B站、微博热点抓取实战

理论说再多,不如一行代码。下面我们分别针对三个平台,看看具体怎么操作。我会以获取其“热榜”或“热搜”数据为目标,演示最基础的抓取流程,并指出其中可能遇到的坑。

4.1 微博热搜抓取:相对简单的起点

微博的热搜榜(https://s.weibo.com/top/summary)是一个很好的入门案例。它的数据在HTML中相对清晰。

基础步骤:

  1. 分析页面结构:用浏览器打开热搜榜页面,按F12打开开发者工具,使用“检查元素”功能,找到热搜列表对应的HTML代码。你会发现每条热搜都在一个<tr>标签里。
  2. 发送请求与解析
import requests from bs4 import BeautifulSoup import json def fetch_weibo_hot(): url = "https://s.weibo.com/top/summary" 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', 'Cookie': '', # 有时需要Cookie,但热搜榜通常不需要登录也能看 'Referer': 'https://weibo.com/' } try: response = requests.get(url, headers=headers, timeout=10) response.raise_for_status() # 检查请求是否成功 response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'lxml') hot_list = [] # 根据页面结构定位热搜条目。注意:此选择器可能随微博页面改版而变化! # 这里是一个示例,实际需要你根据当时的页面结构调整。 rows = soup.select('tbody tr') # 找到所有表格行 for row in rows: # 尝试提取排名、关键词、热度 rank_elem = row.select_one('td.td-01') keyword_elem = row.select_one('td.td-02 a') hot_elem = row.select_one('td.td-02 span') if keyword_elem: item = { 'rank': rank_elem.text.strip() if rank_elem else '', 'keyword': keyword_elem.text.strip(), 'url': 'https://s.weibo.com' + keyword_elem['href'] if keyword_elem.get('href') else '', 'hot_index': hot_elem.text.strip() if hot_elem else '' } hot_list.append(item) print(json.dumps(hot_list, ensure_ascii=False, indent=2)) return hot_list except requests.exceptions.RequestException as e: print(f"请求微博热搜失败: {e}") return [] if __name__ == '__main__': fetch_weibo_hot()

可能遇到的坑与解决思路:

  • 选择器失效:这是最大的变数。微博前端经常微调,导致td.td-01这样的CSS类名发生变化。解决办法是定期检查,并准备多套备选选择器,或者使用更稳定的定位方式(如通过id属性,但通常榜单没有id)。
  • 需要登录态:某些更详细的数据(如实时进榜、出榜记录)可能需要携带登录后的Cookie才能访问。你可以手动登录后从浏览器开发者工具的Network标签里复制Cookie字符串,但注意Cookie会过期。自动化登录微博非常复杂,涉及验证码,不推荐新手尝试。
  • 频率限制:短时间高频访问,IP可能会被暂时限制。解决方案是增加请求间隔(如time.sleep(random.uniform(2, 5))),并使用代理IP。

4.2 B站热门视频与排行榜抓取

B站的热门内容分散在几个地方:“热门”标签(https://www.bilibili.com/v/popular)、各分区排行榜(如https://www.bilibili.com/v/popular/rank/all)。B站页面动态加载较多,但热门榜单数据通常也在首屏HTML中。

实战示例(抓取全站热门榜):

import requests from bs4 import BeautifulSoup import re def fetch_bilibili_hot(): url = "https://www.bilibili.com/v/popular/rank/all" 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', 'Referer': 'https://www.bilibili.com/' } try: resp = requests.get(url, headers=headers, timeout=10) resp.raise_for_status() # B站页面编码是utf-8 resp.encoding = 'utf-8' soup = BeautifulSoup(resp.text, 'lxml') hot_list = [] # 排行榜列表通常在一个类名为`rank-list`的容器内 rank_items = soup.select('.rank-item') for item in rank_items: # 提取视频标题、UP主、播放量、弹幕数、综合得分等 title_elem = item.select_one('.info a.title') up_elem = item.select_one('.detail a.name') play_elem = item.select_one('.detail span.data-box:first-child') danmaku_elem = item.select_one('.detail span.data-box:nth-child(2)') score_elem = item.select_one('.pts div') if title_elem: video_info = { 'title': title_elem.text.strip(), 'url': 'https:' + title_elem['href'] if title_elem.get('href') else '', 'up': up_elem.text.strip() if up_elem else '', 'play': play_elem.text.strip() if play_elem else '', 'danmaku': danmaku_elem.text.strip() if danmaku_elem else '', 'score': score_elem.text.strip() if score_elem else '' } # 进一步清理数据,例如播放量“100万”转为数字 hot_list.append(video_info) print(f"获取到{len(hot_list)}条B站热门视频信息") return hot_list except Exception as e: print(f"获取B站热门榜失败: {e}") return [] if __name__ == '__main__': fetch_bilibili_hot()

B站特有的难点:

  • 动态渲染与数据接口:B站很多页面(如搜索页、动态流)的数据是通过接口异步加载的。这时候直接抓HTML没用。你需要打开开发者工具的“网络”(Network)标签,筛选XHR/Fetch请求,找到返回真实数据的接口URL。这些接口通常返回JSON格式,用requests直接请求接口更方便。例如,B站搜索的接口是https://api.bilibili.com/x/web-interface/search/type?keyword=...
  • 参数签名:一些重要的接口(如涉及用户信息、投稿)会对请求参数进行加密签名,防止直接调用。逆向分析签名算法难度很高,通常需要研究JavaScript代码。对于抓取公开热点,尽量寻找无需签名的公开接口。
  • 风控严格:B站对爬虫的识别和封禁比较积极。除了User-Agent,可能还需要携带一些其他头部信息(如Origin,Accept-Language),并控制好请求节奏。

4.3 抖音热点与热榜挑战

抖音是三者中反爬最严、数据获取最困难的平台之一。其网页版(https://www.douyin.com/)功能有限,大部分数据都在App端。网页版的热榜需要登录才能查看完整版。

思路一:从网页版探索(有限数据)尝试访问https://www.douyin.com/hot,你会发现不登录只能看到很少几条。登录后,可以抓取到更多。但自动化登录抖音(尤其是处理验证码)是地狱级难度。

思路二:分析App端接口(推荐给进阶者)这是获取抖音数据更有效的方法。你需要使用抓包工具(如mitmproxy)拦截手机抖音App的流量。

  1. 在手机上配置代理,安装抓包工具的CA证书。
  2. 打开抖音,浏览“发现”页或搜索“热点”,观察网络请求。
  3. 你会找到类似https://aweme.snssdk.com/aweme/v1/hot/search/list/这样的接口,它返回的就是热搜榜的JSON数据。
  4. 在Python脚本中,模拟这个请求。关键点在于复制所有必要的请求头,特别是User-Agent(需要是抖音App的UA,如Aweme/...)、Cookie以及一些抖音自定义的头部(如X-Gorgon,X-Khronos)。这些头部很多是动态生成的,用于请求签名和风控。

模拟App请求的简化示例(概念性代码,直接运行很可能失败):

import requests def fetch_douyin_hot_app(): url = "https://aweme.snssdk.com/aweme/v1/hot/search/list/" # 这些头部信息必须从抓包中实时获取,且会过期 headers = { 'User-Agent': 'Aweme 12.0.0 rv:120000 (iPhone; iOS 14.2; zh_CN) Cronet', 'Cookie': '你的Cookie', 'X-Gorgon': '动态生成的值', 'X-Khronos': '动态生成的时间戳', 'Host': 'aweme.snssdk.com', 'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-Hans-CN;q=1', } params = { 'device_platform': 'iphone', 'version_name': '12.0.0', # ... 其他必要参数 } try: resp = requests.get(url, headers=headers, params=params, timeout=10) if resp.status_code == 200: data = resp.json() # 解析data中的word_list字段获取热搜词 hot_list = data.get('data', {}).get('word_list', []) for item in hot_list: print(f"热搜词: {item.get('word')}, 热度: {item.get('hot_value')}") return hot_list else: print(f"请求失败,状态码: {resp.status_code}") except Exception as e: print(f"获取抖音热搜失败: {e}") return []

重要警告:抖音的X-GorgonX-Khronos等签名算法非常复杂,且经常更新。逆向和维持这些签名的有效性是一项持续性的高难度工作,需要投入大量精力。对于个人学习和小规模使用,这可能是一个得不偿失的无底洞。

给新手的务实建议:如果你只是想获取抖音热点关键词用于内容灵感,一个更简单(但非技术)的方法是关注一些第三方数据平台或聚合网站,它们可能已经整合了这些信息。或者,将目标转向抖音的“创作灵感”、“热点宝”等官方提供给创作者的工具,虽然不能自动化抓取,但可以手动查看。

5. 数据清洗、存储与简单分析

抓取到原始数据只是第一步,一堆杂乱的文本和数字没有价值。我们需要把它变成结构化的、可查询、可分析的信息。

5.1 数据清洗:从混乱到规整

清洗工作通常在解析数据时同步进行,主要包括:

  • 去除无关字符:去除文本中的多余空格、换行符、不可见字符。
    clean_text = raw_text.strip().replace('\n', '').replace('\r', '')
  • 统一格式:例如,将“1.2万”转换为“12000”,将“昨天 10:30”转换为标准时间戳。
    import re def parse_count(count_str): if '万' in count_str: num = float(re.search(r'[\d.]+', count_str).group()) return int(num * 10000) elif '亿' in count_str: num = float(re.search(r'[\d.]+', count_str).group()) return int(num * 100000000) else: return int(re.search(r'\d+', count_str).group() if re.search(r'\d+', count_str) else 0)
  • 处理缺失值:对于某些条目可能缺失的字段(如热度值),决定是填充默认值(如0)、忽略该条记录,还是通过其他方式估算。

5.2 数据存储:为后续分析奠基

对于热点监控这种时序数据,最简单的存储方式就是文件(如CSV、JSON)或轻量级数据库(如SQLite)。

使用SQLite存储微博热搜示例:

import sqlite3 import datetime def save_to_sqlite(data_list, platform='weibo'): conn = sqlite3.connect('hot_trends.db') cursor = conn.cursor() # 创建表(如果不存在) cursor.execute(''' CREATE TABLE IF NOT EXISTS hot_items ( id INTEGER PRIMARY KEY AUTOINCREMENT, platform TEXT, rank INTEGER, keyword TEXT, hot_index TEXT, capture_time TIMESTAMP ) ''') capture_time = datetime.datetime.now() for item in data_list: cursor.execute(''' INSERT INTO hot_items (platform, rank, keyword, hot_index, capture_time) VALUES (?, ?, ?, ?, ?) ''', (platform, item.get('rank'), item.get('keyword'), item.get('hot_index'), capture_time)) conn.commit() conn.close() print(f"数据已保存到数据库,共{len(data_list)}条记录。")

使用CSV文件存储:

import csv import os def save_to_csv(data_list, platform='weibo'): filename = f"{platform}_hot_{datetime.datetime.now().strftime('%Y%m%d_%H%M')}.csv" fieldnames = ['rank', 'keyword', 'hot_index', 'url'] # 根据实际数据结构调整 with open(filename, 'w', newline='', encoding='utf-8-sig') as f: # utf-8-sig解决Excel打开乱码 writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() writer.writerows(data_list) print(f"数据已保存到文件: {filename}")

5.3 简单分析:从数据中看到趋势

有了历史数据,就可以做很多有趣的分析:

  • 热度趋势图:将某个关键词(如“AI”)在不同时间点的排名或热度值连成线,观察其走势。
  • 上榜时长统计:统计哪些话题是“常青树”,哪些是“昙花一现”。
  • 平台对比:同一时间段,不同平台的热点有何异同?这能反映平台的用户属性差异。
  • 关联分析:某个热点出现后,是否带动了其他相关关键词的上榜?

这些分析可以用Python的pandasmatplotlib等库轻松实现。例如,用pandas加载CSV文件后,筛选、分组、聚合、绘图都非常方便。

6. 避坑指南与伦理边界

在实战中,你会遇到无数个坑。这里分享几个最典型的,以及必须坚守的底线。

6.1 技术上的常见坑

  1. 请求被拒绝(403 Forbidden)

    • 原因:缺少必要的请求头(如User-Agent,Referer),或触发了基于IP的风控。
    • 解决:补全常见的浏览器请求头。使用代理IP轮换。在请求间增加随机延迟(time.sleep(random.uniform(1, 3)))。
  2. 返回空数据或错误数据

    • 原因:页面改版,你的HTML选择器失效了。或者数据是通过JS动态加载的,你抓取的是初始空模板。
    • 解决:定期检查并更新选择器。使用开发者工具的“网络”面板,查找真正的数据接口(XHR/Fetch请求),尝试直接调用该接口获取JSON数据。
  3. 遇到验证码

    • 原因:你的请求行为被识别为机器人。
    • 解决:这是最棘手的。可以尝试降低请求频率,优化请求头使其更像真人。对于简单的图形验证码,可以考虑接入打码平台(OCR识别服务)。但对于复杂的滑块、点选验证码,自动化破解成本极高,且法律风险大,通常建议放弃或寻找无需验证码的替代数据源。
  4. 数据乱码

    • 原因:网页编码与requests默认解码方式不一致。
    • 解决:检查响应头中的Content-Type,或根据网页源码中的<meta charset>标签确定编码(如gbk,gb2312,utf-8),然后手动设置response.encoding

6.2 必须遵守的伦理与法律边界

技术是中立的,但使用技术的人必须有底线。

  1. 尊重robots.txt:虽然这不是法律,但它是网站主人表达爬虫访问意愿的行业规范。访问https://www.example.com/robots.txt可以查看规则。明确写了Disallow: /的,最好别爬。

  2. 控制访问频率:你的脚本不应该对目标网站服务器造成显著负担。想象一下,如果有一千个人像你的脚本这样频繁请求,网站会不会瘫痪?设置合理的延迟,避免在高峰时段抓取。

  3. 不抓取个人隐私和敏感数据:绝对不要尝试抓取非公开的用户个人信息、私信、通讯录等。这不仅是道德问题,更可能触犯法律。

  4. 明确数据用途:抓取的数据应用于个人学习、研究或合法的内容创作参考。不要用于恶意竞争、商业间谍、骚扰他人或任何非法活动。

  5. 遵守平台用户协议:几乎所有平台的服务条款都禁止未经授权的自动化数据收集。你需要意识到其中的风险。对于个人学习和小规模研究,通常处于灰色地带,但务必保持低调和克制。

说到底,这项技能的核心价值不在于你能抓到多少数据,而在于你通过这个过程,理解了数据流动的规律,锻炼了解决问题的工程化思维。从“看热闹”的吃瓜群众,变成“看门道”的观察者,这个视角的转变,才是“AI Skills”带给你的最大财富。先从小规模、低频次、公开数据的抓取开始练手,理解整个链条,再逐步应对更复杂的挑战。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 1:38:03

如何一键实现多平台直播:obs-multi-rtmp终极配置指南

如何一键实现多平台直播&#xff1a;obs-multi-rtmp终极配置指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否曾经为同时向多个平台直播而烦恼&#xff1f;每次直播都要重复配…

作者头像 李华
网站建设 2026/8/14 1:35:17

OpenReviewer本地部署与实战:学术论文AI评审助手从环境搭建到批量处理

这类工具最值得先看的不是功能列表&#xff0c;而是能不能在普通环境里稳定跑起来&#xff0c;以及它生成的评审意见到底有没有实际参考价值。OpenReviewer 是一个专门用于生成学术论文评审意见的大语言模型&#xff0c;它瞄准的是科研工作者、审稿人、期刊编辑乃至学生群体在论…

作者头像 李华
网站建设 2026/8/14 1:35:09

Ubuntu中文输入法配置指南:IBus与Fcitx框架深度解析

1. 项目概述&#xff1a;为什么在Ubuntu上搞定中文输入法是个技术活如果你刚接触Ubuntu&#xff0c;尤其是从Windows或macOS切换过来&#xff0c;安装中文输入法这件事&#xff0c;大概率会成为你遇到的第一个“拦路虎”。这听起来像是个基础操作&#xff0c;但背后涉及Linux桌…

作者头像 李华
网站建设 2026/8/14 1:33:04

宇树G1人形机器人ROS2强化学习编舞:从仿真到实机的完整开发指南

这次我们来看一个将传统服饰文化与前沿机器人技术结合的开源项目——宇树G1人形机器人编舞表演。这个项目不是简单的动作回放&#xff0c;而是基于ROS2平台&#xff0c;通过强化学习算法让机器人学习并演绎具有“温和”人形运动风格的舞蹈&#xff0c;特别是穿着传统服饰时的动…

作者头像 李华