MediaCrawler:小红书数据采集实战

为什么需要爬取小红书数据 做内容运营的人,大概都遇到过一个问题:不知道发什么。 运营这件事,最怕的是闭门造车。你在这里想选题想了两天,结果别人发的内容比你精心策划的还要好。如果能知道同行在发什么、什么内容受欢迎,至少能给选题方向提供一些参考。 爬取小红书的数据,主要就是为了做竞品分析。看一下同类账号的发文频率、内容类型、标题风格、互动数据。这些信息可以帮你在做内容计划的时候更有方向。 我自己做的是一个国际教育方向的账号,一开始完全是在摸索。今天发一条课程介绍,明天发一条海外生活,数据起起伏伏,完全找不到规律。后来决定看看同行都在做什么,才想到用爬虫来获取数据。 选型考量:为什么是 MediaCrawler 爬虫工具其实不少,但针对小红书这种有反爬机制的平台,开箱即用的不多。 我之前试过自己写 requests 加代理池的方案,听起来很酷,实际跑起来全是坑。小红书的风控做得很细,光是登录这一关就能折腾一整天。好不容易爬上去了,发几个请求就被封了。维护成本太高,不适合做长期的数据收集。 后来在 GitHub 上看到了 MediaCrawler,试用了一下,感觉最大的优势是: 多平台支持。它不只能爬小红书,还支持抖音、B 站、微博。同一个工具,改一下参数就能切换平台。对我这种可能以后要做多平台内容的人来说,学一个工具就够了。 登录和 Cookie 管理已经处理好了。MediaCrawler 通过浏览器模拟登录,把登录状态持久化。我只需要第一次手动扫码登录,后续的请求都会自动携带有效的 Cookie。这部分是很多爬虫工具没有做好的地方。 数据输出格式规范。数据以 JSONL 格式输出,每行一个完整的 JSON 对象。后续无论是做统计分析还是训练模型,处理起来都很方便。 部署和配置的全过程 说回到部署,其实过程不算复杂,但有几个坑值得记下来。 环境准备 MediaCrawler 基于 Python,依赖管理用的是 pip。我是在 macOS 上跑的,步骤大概是: git clone https://github.com/NanmiCoder/MediaCrawler.git cd MediaCrawler pip install -r requirements.txt 依赖比较多,建议用虚拟环境。我一开始直接在全局环境装,结果跟已有的包版本冲突了,折腾了半天。后来用 conda 新建了一个环境,一步到位。 浏览器驱动的配置 MediaCrawler 需要配合浏览器驱动来模拟登录。如果你机器上已经装了 Chrome,它会自动检测。但有些 macOS 用户会遇到 chromedriver 版本不匹配的问题。 解决方法也不复杂,去 Chrome 的关于页面看一下当前版本,然后到 chromedriver 官网下载对应的版本,放到 /usr/local/bin 下就行。 首次登录 第一次运行需要扫码登录。执行爬虫命令后,终端会弹出一个浏览器窗口,你打开小红书,扫一下二维码,登录成功后窗口会自动关闭,之后的请求就会一直保持登录状态。 这一步要注意的是:不要中途关闭浏览器窗口。我第一次跑的时候以为登录完就可以关了,结果爬虫报错说找不到登录状态。后来才知道,程序要等到浏览器自动关闭才算完整走完登录流程。 使用过程中遇到的坑和解决方案 浏览器的缓存问题 这是我在使用过程中遇到的第一个坑,也是最容易忽略的一个。 每次修改关键词或者筛选条件之后,需要清理浏览器的缓存数据。如果不清理,爬虫仍然会使用上次的缓存,抓回来的数据跟没换关键词之前一样。 ...

2026-05-23 · 2 min · 218 words · Seb

对比了几款网页爬虫,我选了 Crawl4AI

爬虫工具的选择 写爬虫的需求大多数人都会遇到——想从某个网站上抓取一些内容做分析。 传统的爬虫工具大致分两类。一类是 Scrapy 这样的完整框架,功能强大,但配置复杂。写一个简单的抓取任务可能需要定义 Item、Pipeline、Middleware 等多个组件。另一类是 Requests + BeautifulSoup 的组合,上手简单,但遇到 JavaScript 渲染的页面就无能为力了。 Crawl4AI 的出现填补了两者之间的空白。它的定位是"专为 LLM 时代设计的爬虫工具"。 为什么选 Crawl4AI 最大的理由是它对 JavaScript 渲染的支持。现在的网页大部分是前后端分离的,数据通过异步请求加载,页面最终内容由 JavaScript 渲染生成。如果用传统爬虫去抓取这类网站,拿到的是空的 HTML 骨架,真正的数据根本不在这里。 Crawl4AI 内置了浏览器引擎,会自动执行页面上的 JavaScript,等页面完全渲染后再提取内容。这意味着你不必为了一个需要 JS 渲染的页面去额外配置 Selenium 或 Playwright。 另外,它的默认输出格式是 Markdown。这个细节在实际使用中很实用——抓取到的内容可以直接喂给 LLM 做分析,省去了格式转换的步骤。 安装和基本使用 Crawl4AI 的安装很简单,一行命令搞定: pip install crawl4ai 装完之后跑一个小例子试试: from crawl4ai import WebCrawler crawler = WebCrawler() result = crawler.run(url="https://example.com") print(result.markdown) 默认输出就是 Markdown,干净整洁。如果你需要原始 HTML,也可以拿到: print(result.html) # 原始 HTML print(result.extracted_content) # 提取后的内容 更高级的抓取配置 实际项目里,一条 URL 裸跑往往不够。Crawl4AI 提供了丰富的配置选项,这里分享几个常用的场景。 设置超时和等待 有的页面加载很慢,尤其是那些带大量图片和图表的网站。可以给爬虫指定最长等待时间: result = crawler.run( url="https://example.com/slow-page", wait_until="networkidle", # 等待网络请求空闲 timeout=30 # 最长等 30 秒 ) wait_until 参数有几个选项: ...

2026-05-23 · 2 min · 307 words · Seb