7 天试用

Reddit 爬虫,按帖子计费,而不是按每条评论

粘贴一个 Reddit 帖子,一次请求就能拿到主贴和前 25 条评论,按 1 页计费。无需 Reddit API 密钥,无需审批,页面加载失败不收费。

试试:

1,000 次免费请求 · 仅成功时计费 · 195+ 个国家和地区 · 适配 Claude

reddit.com/r/marketing/comments/1x6ko90/why_the_marketing_department_is_about_to_disappear/示例运行 · 25 条评论 · 按 1 页计费 · 2.9 秒
下载
  1. 在美国打开真实浏览器
  2. 像访客一样加载帖子
  3. 读取主贴和评论

准备好采集自己的帖子了吗?获取 API 密钥,或预约演示。

获取 API 密钥和免费请求额度

简单介绍一下您的团队,即可获得:

  • 一个工作日内发放 API 密钥
  • 可在您自己的目标站点上使用免费请求
G2 评分 4.7 / 5基于 79 条评价
预约演示

无需绑定银行卡,随时可取消。我们会在一个工作日内回复您。

采集 25,000 条 Reddit 评论只需 $0.98

一个 Reddit 帖子页包含主贴及其前 25 条评论,Web Unlocker 按 1 页计费。Apify 上的 Reddit 评论采集工具则把主贴和每条评论各算作一行来计费。

一页,25 条评论。
四页,100 条评论。

把同一个帖子按最佳、最新、最热和最早排序打开:每种排序多一页,带来另外 25 条评论。单条评论自己的页面则包含它的回复。

1,000 个各含 25 条评论的帖子的费用

1,000 个主贴和 25,000 条评论,按公布价格计算

  • $0.98Gologin Web Unlocker
  • $38.74Enterprise Grade(基于 Apify)
  • $52.02Posts & Comments(基于 Apify)
  • $104Reddit Scraper Lite(基于 Apify)

Apify 上最常用的三款 Reddit 采集工具,把每个主贴和每条评论都按一行计费,免费套餐为 26,000 行。

选择获取 Reddit 数据的方式

Reddit 的公开 API 将于 2027 年 3 月前关闭,而且 Reddit 采集工具按每条评论计费。下面是各条路线采集同样 1,000 个帖子所需的条件。

Gologin Web Unlocker、Reddit Data API、Apify 与 Bright Data 在 Reddit 批准、计费单位、1,000 个含评论的帖子的价格、页面格式和免费开始上的对比
需要什么Web UnlockerReddit Data APIApifyBright Data
无需 Reddit 批准即可开始是否是是
您按什么付费一页一次 API 调用每个主贴和每条评论每条记录
1,000 个含 25 条评论的帖子$0.98仅按合同$15.53 至 $104每 1,000 条记录 $1.50
整个页面的 HTML 或 Markdown是否否否
企业可免费开始是否是是

要采集的不只是 Reddit?Web Unlocker 以同样的方式、同样的价格返回任何页面。

每 15 分钟监控一个 subreddit,每月只需 $3

Web Unlocker 本身没有提醒功能。您的脚本想多频繁就多频繁地请求 subreddit 的最新帖子,每次检查算一页:每天 96 次检查,每月合计 $2.82。

Syften 提醒每月 $29.95 起。
您自己的一次检查只需 $0.001。

如何用 Python 或 Node.js 采集 Reddit 数据

直接请求 subreddit 只会得到空页面,因为 Reddit 的帖子是在浏览器里绘制出来的。Web Unlocker 用真实浏览器加载页面,并连同全部 27 个帖子一起返回。

  1. 步骤 01

    获取 API 密钥

    填写上面的表单。密钥会在一个工作日内通过邮件送达。

  2. 步骤 02

    选择页面

    要评论就选一个帖子,要最新内容就选按最新排序的 subreddit,或者用您的关键词搜索。

  3. 步骤 03

    读取帖子

    页面上的每个帖子和评论都带有作者、得分、时间和正文。

安装
pip install requests
运行
GOLOGIN_SCRAPING_API_KEY=your_key python reddit_thread.py
发送至
https://parsing.webunlocker.gologin.com/v1/scrape
import html as entities
import json
import os
import re
import time

import requests

thread = "https://www.reddit.com/r/marketing/comments/1x6ko90/why_the_marketing_department_is_about_to_disappear/"


def scrape(url):
    for attempt in range(3):
        response = requests.get(
            "https://parsing.webunlocker.gologin.com/v1/scrape",
            params={"url": url, "geo": "us", "format": "json"},
            headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
            timeout=90,
        )
        page = response.json().get("data", {}).get("html", "") if response.ok else ""
        if "<shreddit-comment" in page:
            return page
        time.sleep(5)
    raise RuntimeError("No comments came back, try again later")


def attr(tag, name):
    match = re.search(rf'\s{name}="([^"]*)"', tag)
    return entities.unescape(match.group(1)) if match else None


def text(page, element_id):
    start = page.find(f'id="{element_id}"')
    end = page.find("</div>", start)
    paragraphs = re.findall(r"<p>(.*?)</p>", page[start:end], re.S)
    return "\n".join(entities.unescape(re.sub(r"<[^>]+>|\s+", " ", p)).strip() for p in paragraphs)


page = scrape(thread)
post = re.search(r"<shreddit-post\b[^>]*>", page).group(0)
comments = {}
for tag in re.findall(r'<shreddit-comment\b[^>]*thingid="t1_[^>]*>', page):
    comment_id = attr(tag, "thingid")
    comments[comment_id] = {
        "author": attr(tag, "author"),
        "score": attr(tag, "score"),
        "depth": attr(tag, "depth"),
        "text": text(page, f"{comment_id}-comment-rtjson-content"),
    }

print(json.dumps({
    "title": attr(post, "post-title"),
    "score": attr(post, "score"),
    "upvote_ratio": attr(post, "upvote-ratio"),
    "comments_on_reddit": attr(post, "comment-count"),
    "comments": list(comments.values()),
}, indent=2, ensure_ascii=False))

准备好用在自己的帖子上了吗?获取 API 密钥和免费请求额度。

用 Cloud Browser 采集每一条回复

Web Unlocker 返回页面上的前 25 条评论。Cloud Browser 在真实浏览器中打开 Reddit 并不断点击:95 秒内 286 条评论,深达五层。

  • 每一条回复,深达五层

    它替您点开每一个“更多回复”:95 秒内 286 条评论,而在这个帖子里一页只有 25 条。

  • 整个信息流,而不只是一页

    它像真人一样滚动 subreddit:90 秒内 576 个帖子,一直回溯到 2 月。

  • 登录一次,保持登录

    配置文件会保留会话,所以之后每次运行 Reddit 都能立即打开。含住宅 IP。

通过 Playwright、Puppeteer 或 Claude 运行。了解 Cloud Browser。

完整技术栈的一部分

一个账户,一个代理网络,一套生态。按任务需要选择产品。

还要采集其他商店?请查看 Amazon、eBay 和 Walmart 采集工具,或全部网页采集工具。

Reddit 爬虫常见问题

如何抓取 Reddit 数据?

把 Reddit 页面地址发送给 Web Unlocker:可以是帖子、subreddit 或搜索。它会用真实浏览器打开页面并返回,页面上每个帖子和评论的作者、得分、时间和正文都在其中。上面的代码正是这样做的。

如何抓取 Reddit 评论?

抓取帖子页面:里面有主贴及其前 25 条评论,按 1 页计费。把帖子按最新、最热或最早排序,每次多得 25 条;也可以打开任意一条评论自己的页面,获取它的回复。

如何用 Python 编写 Reddit 爬虫?

用 requests 库把帖子地址发送给 Web Unlocker,再从页面中读取评论。上面的 Python 标签页是一份完整的脚本,已在真实 API 上测试过。

不用 API 能抓取 Reddit 吗?

能。帖子、subreddit 和搜索都是公开页面,无需登录即可加载。Web Unlocker 像访客的浏览器一样看到它们并返回,不需要 Reddit API 密钥,也不需要审批。旧的 .json 地址和旧版 Reddit 现在要求登录,常规的 reddit.com 页面则不需要。

Reddit API 要多少钱?

仅限已注册的非商业应用免费。商业用途需要 Reddit 的批准和合同。Reddit 不公布价格:2023 年公开的最后一次费率是 5,000 万次调用 $12,000。

Reddit 公开 API 关闭后会怎样?

未在 Reddit 注册的应用从 2027 年 1 月 12 日起失去 API 访问权限,公开 API 访问将在 2027 年 3 月前结束。Reddit 页面仍然公开,Web Unlocker 读取的就是这些页面。

Pushshift 被什么取代了?

没有官方的替代品。复制 Reddit 内容的存档收录帖子的时间更晚,也漏掉最新的投票。Web Unlocker 读取的是 Reddit 本身,所以帖子显示的是您采集那一刻的得分。

能抓取整个 subreddit 吗?

能,逐页进行:每页列出约 25 个帖子,下一页就是多一次请求,价格相同。Reddit 会在约 1,000 个帖子处截断任何列表,所以想要更多,请按搜索词或时间切分。

能抓取 Reddit 搜索结果吗?

能。发送带有您关键词的 reddit.com/search 地址,按最新或最热排序,搜帖子或搜评论,然后逐页翻看结果。

如何把 Reddit 数据导出为 CSV?

Web Unlocker 返回的是页面,而不是表格,所以在您看到之前不会丢失任何内容。把它转成 CSV 只需几行代码,或者一句提示词:用 Gologin scraping skill 把页面交给 Claude,让它输出 CSV。

Reddit 爬虫要多少钱?

每 1,000 个页面低于 $1,每个页面价格相同。一个帖子连同前 25 条评论算 1 页,所以 1,000 个帖子约合 $1。页面加载失败不收费。套餐每月 $49 起,含 50,000 次请求。

有免费的 Reddit 爬虫吗?

有,可以免费开始:Web Unlocker 附带 1,000 次免费请求,足够采集 1,000 个帖子及其热门评论。

最好的 Reddit 爬虫是什么?

这取决于您的需求。Apify 和 Bright Data 出售整理好的现成数据行,并按每个帖子和每条评论计费。Web Unlocker 以一个价格返回整个 Reddit 页面,所以评论随帖子一起到手,解析方式由您决定。

抓取 Reddit 合法吗?

帖子、subreddit 和搜索都是公开页面,无需登录即可加载。Web Unlocker 像访客的浏览器一样加载它们并返回页面。您采集什么、如何使用,由您自己决定,请对照适用于您项目的规则自行核对。

获取 API 密钥和免费请求额度

简单介绍一下您的团队,即可获得:

  • 一个工作日内发放 API 密钥
  • 可在您自己的目标站点上使用免费请求
G2 评分 4.7 / 5基于 79 条评价
预约演示

无需绑定银行卡,随时可取消。我们会在一个工作日内回复您。