<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>MediaCrawler on Fanssen Notes</title>
    <link>https://makismkuous-bot.github.io/tags/mediacrawler/</link>
    <description>Recent content in MediaCrawler on Fanssen Notes</description>
    <image>
      <title>Fanssen Notes</title>
      <url>https://makismkuous-bot.github.io/</url>
      <link>https://makismkuous-bot.github.io/</link>
    </image>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sat, 23 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://makismkuous-bot.github.io/tags/mediacrawler/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MediaCrawler：小红书数据采集实战</title>
      <link>https://makismkuous-bot.github.io/posts/mediacrawler-practice/</link>
      <pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate>
      <guid>https://makismkuous-bot.github.io/posts/mediacrawler-practice/</guid>
      <description>&lt;h2 id=&#34;为什么需要爬取小红书数据&#34;&gt;为什么需要爬取小红书数据&lt;/h2&gt;
&lt;p&gt;做内容运营的人，大概都遇到过一个问题：不知道发什么。&lt;/p&gt;
&lt;p&gt;运营这件事，最怕的是闭门造车。你在这里想选题想了两天，结果别人发的内容比你精心策划的还要好。如果能知道同行在发什么、什么内容受欢迎，至少能给选题方向提供一些参考。&lt;/p&gt;
&lt;p&gt;爬取小红书的数据，主要就是为了做竞品分析。看一下同类账号的发文频率、内容类型、标题风格、互动数据。这些信息可以帮你在做内容计划的时候更有方向。&lt;/p&gt;
&lt;p&gt;我自己做的是一个国际教育方向的账号，一开始完全是在摸索。今天发一条课程介绍，明天发一条海外生活，数据起起伏伏，完全找不到规律。后来决定看看同行都在做什么，才想到用爬虫来获取数据。&lt;/p&gt;
&lt;h2 id=&#34;选型考量为什么是-mediacrawler&#34;&gt;选型考量：为什么是 MediaCrawler&lt;/h2&gt;
&lt;p&gt;爬虫工具其实不少，但针对小红书这种有反爬机制的平台，开箱即用的不多。&lt;/p&gt;
&lt;p&gt;我之前试过自己写 requests 加代理池的方案，听起来很酷，实际跑起来全是坑。小红书的风控做得很细，光是登录这一关就能折腾一整天。好不容易爬上去了，发几个请求就被封了。维护成本太高，不适合做长期的数据收集。&lt;/p&gt;
&lt;p&gt;后来在 GitHub 上看到了 MediaCrawler，试用了一下，感觉最大的优势是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;多平台支持&lt;/strong&gt;。它不只能爬小红书，还支持抖音、B 站、微博。同一个工具，改一下参数就能切换平台。对我这种可能以后要做多平台内容的人来说，学一个工具就够了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;登录和 Cookie 管理已经处理好了&lt;/strong&gt;。MediaCrawler 通过浏览器模拟登录，把登录状态持久化。我只需要第一次手动扫码登录，后续的请求都会自动携带有效的 Cookie。这部分是很多爬虫工具没有做好的地方。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数据输出格式规范&lt;/strong&gt;。数据以 JSONL 格式输出，每行一个完整的 JSON 对象。后续无论是做统计分析还是训练模型，处理起来都很方便。&lt;/p&gt;
&lt;h2 id=&#34;部署和配置的全过程&#34;&gt;部署和配置的全过程&lt;/h2&gt;
&lt;p&gt;说回到部署，其实过程不算复杂，但有几个坑值得记下来。&lt;/p&gt;
&lt;h3 id=&#34;环境准备&#34;&gt;环境准备&lt;/h3&gt;
&lt;p&gt;MediaCrawler 基于 Python，依赖管理用的是 pip。我是在 macOS 上跑的，步骤大概是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/NanmiCoder/MediaCrawler.git
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd MediaCrawler
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;依赖比较多，建议用虚拟环境。我一开始直接在全局环境装，结果跟已有的包版本冲突了，折腾了半天。后来用 conda 新建了一个环境，一步到位。&lt;/p&gt;
&lt;h3 id=&#34;浏览器驱动的配置&#34;&gt;浏览器驱动的配置&lt;/h3&gt;
&lt;p&gt;MediaCrawler 需要配合浏览器驱动来模拟登录。如果你机器上已经装了 Chrome，它会自动检测。但有些 macOS 用户会遇到 chromedriver 版本不匹配的问题。&lt;/p&gt;
&lt;p&gt;解决方法也不复杂，去 Chrome 的关于页面看一下当前版本，然后到 chromedriver 官网下载对应的版本，放到 &lt;code&gt;/usr/local/bin&lt;/code&gt; 下就行。&lt;/p&gt;
&lt;h3 id=&#34;首次登录&#34;&gt;首次登录&lt;/h3&gt;
&lt;p&gt;第一次运行需要扫码登录。执行爬虫命令后，终端会弹出一个浏览器窗口，你打开小红书，扫一下二维码，登录成功后窗口会自动关闭，之后的请求就会一直保持登录状态。&lt;/p&gt;
&lt;p&gt;这一步要注意的是：&lt;strong&gt;不要中途关闭浏览器窗口&lt;/strong&gt;。我第一次跑的时候以为登录完就可以关了，结果爬虫报错说找不到登录状态。后来才知道，程序要等到浏览器自动关闭才算完整走完登录流程。&lt;/p&gt;
&lt;h2 id=&#34;使用过程中遇到的坑和解决方案&#34;&gt;使用过程中遇到的坑和解决方案&lt;/h2&gt;
&lt;h3 id=&#34;浏览器的缓存问题&#34;&gt;浏览器的缓存问题&lt;/h3&gt;
&lt;p&gt;这是我在使用过程中遇到的第一个坑，也是最容易忽略的一个。&lt;/p&gt;
&lt;p&gt;每次修改关键词或者筛选条件之后，需要清理浏览器的缓存数据。如果不清理，爬虫仍然会使用上次的缓存，抓回来的数据跟没换关键词之前一样。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
