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

爬虫代理

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

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

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

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

+ 封面图

+ 视频文件(如果有)

+ 标题、作者、发布时间这些基本信息

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

---

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


---

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

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

```python

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、分析搜索页接口,获取核心数据

```python

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下载视频和图片内容

```python

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 主流程(边抓边下)

```python

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 对封面图做点筛选,例如:

```python

import cv2

def is_valid_image(path):

    img = cv2.imread(path)

    if img is None:

        return False

    # 这里可以加你自己的图片过滤逻辑

    return True

```

---

## 最后

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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容