小红书视频图文提取:采集+CV的实战手记

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
简介: 这是一套用于自动抓取小红书热门视频内容的工具脚本,支持通过关键词搜索提取前3名视频的封面图、视频文件及基本信息(标题、作者、发布时间)。适用于品牌营销分析、热点追踪或图像处理等场景。脚本包含代理配置、接口调用和文件下载功能,并提供扩展建议如图像识别与情绪分析。适合需要高效采集小红书数据的团队或个人使用,稳定性和灵活性兼备。

项目说明:这波视频,值不值得采?

你有没有遇到过这样的场景?老板说:“我们得看看最近小红书上关于‘旅行’的视频都说了些什么。”团队做数据分析的,立马傻眼:官网打不开、接口抓不着、视频不能保存。

事实上,小红书短视频内容正逐步成为品牌营销、热点追踪、图像分析等领域的“情绪入口”。尤其是搜索页前几条视频,往往已经代表了这个关键词下用户眼中的“热门答案”。

本项目就是围绕这样一个需求展开的:我们希望通过关键词搜索,自动抓取小红书里排在前3名的视频内容,包括:

  • 封面图
  • 视频文件(如果有)
  • 标题、作者、发布时间这些基本信息

你可以把这个脚本当成一个“图文数据下载器”,用来收集训练素材、做内容统计,或者单纯保存好看的视频封面图。再配合一些图像识别、文本处理工具,后续的玩法空间就打开了。


重点功能梳理(清单式整理)

功能点 用处说明
搜索关键词 获取你关心的词条的前三条笔记
提取图片/视频链接 拿到视频的原始文件地址,不是截图!
拿到文本数据 包括标题、作者、时间,方便后续分析
使用代理IP 为了稳定访问和防止触发风控
模拟浏览器 模拟真实用户行为,让服务器“误以为”是人类在操作

关键代码段(能直接拿去用)

1、网络配置部分(含代理和请求头)

import requests

# 爬虫代理加强版(参考亿牛云代理)
proxy_host = "proxy.16yun.cn"
proxy_port = "9020"
proxy_user = "16YUN"
proxy_pass = "16IP"

proxies = {
   
    "http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
    "https": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
}

# 请求头和 Cookie(可通过浏览器复制)
headers = {
   
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/122.0.0.0 Safari/537.36",
    "Cookie": "这里替换为你自己的cookie字符串",
}

2、分析搜索页接口,获取核心数据

import json

def search_notes(keyword):
    url = "https://edith.xiaohongshu.com/api/sns/web/v1/search/notes"
    params = {
   
        "keyword": keyword,
        "sort": "general",
        "page": 1,
        "page_size": 10
    }

    resp = requests.get(url, headers=headers, proxies=proxies, params=params)
    data = json.loads(resp.text)

    results = []
    for i, item in enumerate(data['data']['items'][:3]):
        note = item.get("note_card", {
   })
        results.append({
   
            "title": note.get("title", ""),
            "author": note.get("user", {
   }).get("nickname", ""),
            "time": note.get("time", ""),
            "cover_img": note.get("image_list", [{
   }])[0].get("url", ""),
            "video_url": note.get("video", {
   }).get("media", {
   }).get("url", "")
        })
    return results

2.1下载视频和图片内容

def download_file(url, filename):
    if not url:
        print(f"跳过空链接:{filename}")
        return
    resp = requests.get(url, headers=headers, proxies=proxies, stream=True)
    with open(filename, 'wb') as f:
        for chunk in resp.iter_content(chunk_size=8192):
            f.write(chunk)
    print(f"下载完成:{filename}")

2.2 主流程(边抓边下)

if __name__ == "__main__":
    kw = "旅行Vlog"
    results = search_notes(kw)

    for idx, r in enumerate(results):
        print(f"\n第{idx+1}条")
        print("标题:", r["title"])
        print("作者:", r["author"])
        print("时间:", r["time"])

        download_file(r["cover_img"], f"cover_{idx+1}.jpg")
        download_file(r["video_url"], f"video_{idx+1}.mp4")

使用建议

  • 代理推荐:使用类似“亿牛云”这种住宅动态代理,稳定性高一些
  • Cookie处理:自己手动登录小红书网页版后从控制台复制即可
  • 接口变动:小红书接口可能不定期改,建议用抓包工具(如Mitmproxy)定期确认
  • 频率控制:尽量控制访问频率,模拟正常用户节奏

快速试运行指引

  1. 打开浏览器,登录小红书网页版
  2. 用F12打开开发者工具,获取请求头 & cookie
  3. 替换代码里的对应字段
  4. 运行脚本,看是否能成功输出视频标题、作者和时间
  5. 查看脚本目录,是否下载了封面图和视频文件

其他建议:可以加点视觉分析的料

如果你要搞点图像识别,可以用 OpenCV 对封面图做点筛选,例如:

import cv2

def is_valid_image(path):
    img = cv2.imread(path)
    if img is None:
        return False
    # 这里可以加你自己的图片过滤逻辑
    return True

最后

如果你只是想定期拉取关键词对应的视频内容,这个脚本就足够用了;如果你还想做图像识别、评论情绪分析甚至推荐系统,那就可以在此基础上扩展。

这套逻辑目前在我们用得还挺稳定的(当然接口不能挂),你也可以根据业务做适当裁剪和封装。遇到接口变更或风控升级,建议直接用浏览器工具重新确认数据来源。

相关文章
|
4月前
|
人工智能 分布式计算 DataWorks
大数据& AI 产品月刊【2025年5月】
大数据& AI 产品技术月刊【2025年5月】,涵盖5月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
|
4月前
|
数据采集 人工智能 数据可视化
体育动画直播怎么做出来的?揭秘从数据到卡通的魔法过程!
体育动画直播是一种结合实时数据、游戏引擎与AI技术的创新形式,可将真实比赛数据转化为动画呈现。它支持自由视角观看、100%还原比赛细节,适用于足球/篮球可视化直播、电竞虚拟形象直播等场景。制作流程包括数据采集(如球员定位、生物力学数据)、3D建模(创建虚拟球场与球员模型)、动画生成(关键帧或AI驱动动作)及实时渲染播出。开发者需注意数据清洗、性能优化与版权问题,未来还将融入元宇宙技术,带来全息、VR沉浸式体验。这是一场体育与科技的完美碰撞!
|
5月前
|
机器学习/深度学习 数据采集 算法
智能限速算法:基于强化学习的动态请求间隔控制
本文分享了通过强化学习解决抖音爬虫限速问题的技术实践。针对固定速率请求易被封禁的问题,引入基于DQN的动态请求间隔控制算法,智能调整请求间隔以平衡效率与稳定性。文中详细描述了真实经历、问题分析、技术突破及代码实现,包括代理配置、状态设计与奖励机制,并反思成长,提出未来优化方向。此方法具通用性,适用于多种动态节奏控制场景。
164 6
智能限速算法:基于强化学习的动态请求间隔控制
|
4月前
|
数据管理 数据挖掘 API
深入研究:shopee商品列表API接口指南
Shopee 是东南亚和中国台湾地区的跨境电商平台,其开放平台(Shopee Open API)为开发者提供商品数据、店铺管理和订单处理等接口。商品列表 API 为核心功能之一,支持按店铺获取商品列表和搜索平台商品。通过 shop_id 等参数可获取指定店铺商品信息,支持分页与状态筛选;通过关键词、类目 ID 和价格范围等条件可搜索平台商品,适用于构建比价工具和选品分析系统。
|
6月前
|
数据采集 JavaScript 前端开发
Pyppeteer实战:基于Python的无头浏览器控制新选择
本文详细讲解了如何使用 Pyppeteer 结合爬虫代理高效采集小红书热点推荐信息。通过设置代理 IP、Cookie 和自定义 User-Agent,突破目标网站的反爬机制,实现标题、内容和评论的数据提取。文章结合代码示例与技术关系图谱,清晰展示从数据采集到分析的全流程,为复杂网站的数据获取提供参考。读者可在此基础上优化异常处理、并发抓取等功能,提升爬虫性能。
382 8
|
3月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
122 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
JavaScript PHP 开发工具
web如何将动态内容分享到Facebook,Twitter等社交平台
web如何将动态内容分享到Facebook,Twitter等社交平台
1599 0
web如何将动态内容分享到Facebook,Twitter等社交平台
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
24115 70
|
11月前
|
机器学习/深度学习 人工智能 测试技术
NeurIPS D&B 2024 突破短视频局限!MMBench-Video解读MLLM视频理解能力
GPT-4o 四月发布会掀起了视频理解的热潮,而开源领军者Qwen2也对视频毫不手软,在各个视频评测基准上狠狠秀了一把肌肉。