测试
10,000 个网页
US$3.75
US$0.38/千页
- 用你的真实 URL 试一试
- 与最大积分包使用同一个 API
- 积分永不过期
POST /crawl · 每个任务最多 10,000 页 · 遵循 robots.txt 和 Crawl-delay
给出起始 URL 和页数上限。爬虫会遵循网站的 sitemap,并跟踪同一域名内的链接,把每个页面读取为 Markdown,再逐页把结果交给你。每页一个积分。
快速回答
如何整站抓取一个网站,并把每个页面都获取为 Markdown?
使用 crawl API:你发送起始 URL 和上限,它把网站的每个页面以 Markdown 返回。WebReaderAPI 每个任务在单一域名内最多抓取 10,000 页,遵循 sitemap、robots.txt 和 Crawl-delay,每读取一页收取一个积分,截至 2026 年 10 月起价为 US$0.07/千页。被 robots.txt 拒绝的页面免费。无需 KYC;加密货币支付。
| 发起整站抓取 (crawl) | 用 url、limit、max_depth、include_paths、exclude_paths 调用 POST https://webreaderapi.com/api/v1/crawl |
|---|---|
| 获取结果 | GET https://webreaderapi.com/api/v1/jobs/{job_id},使用 cursor 分页 |
| 范围 | 每个任务抓取一个网站,最多 10,000 页,遵循其 sitemap、robots.txt 和 Crawl-delay |
| 多个独立 URL | POST https://webreaderapi.com/api/v1/batch:每个批量任务最多 100 个 URL |
| 计费 | 1 积分 = 读取 1 个页面且无需浏览器;当页面需要浏览器渲染 JavaScript 时为 2 积分。失败的请求,或被网站 robots.txt 拒绝的请求,不扣费 |
| 站长 | 我们遵守 robots.txt:我们的爬虫以 WebReaderAPI 标识自身,遵循专为其或为所有爬虫编写的规则,不读取网站禁止的页面。被拒绝的页面不扣费 |
| 价格 | US$14.25 只需 50,000 个网页,US$50 只需 500,000 个网页 |
整站抓取 (crawl) 是一个后台任务,因为读取数百个页面所需的时间远超一次 HTTP 请求应有的时长。
POST https://webreaderapi.com/api/v1/crawl,你会立即得到一个 job_id。max_depth。/read 相同的选项读取:Markdown、正文提取、需要时进行渲染。GET https://webreaderapi.com/api/v1/jobs/{job_id} 并用 cursor 分页获取结果,或在任务处于 done 状态后获取。The job stops at your limit, so you never pay for more pages than you asked for.
import os
import pathlib
import re
import time
import requests
API = "https://webreaderapi.com/api/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]}
job = requests.post(
API + "/crawl",
headers=HEADERS,
json={"url": "https://docs.example.com/", "limit": 500, "max_depth": 4, "include_paths": ["/guide/*"]},
timeout=60,
).json()
out = pathlib.Path("docs_md")
out.mkdir(exist_ok=True)
cursor, delay = None, 5
while True:
params = {"cursor": cursor} if cursor else {}
page = requests.get(API + "/jobs/" + job["job_id"], headers=HEADERS, params=params, timeout=60).json()
for item in page.get("results", []):
if "markdown" in item:
name = re.sub(r"[^a-z0-9]+", "-", item["url"].lower()).strip("-")[:120]
(out / (name + ".md")).write_text(item["markdown"], encoding="utf-8")
cursor = page.get("next_cursor")
if page["status"] == "done" and not cursor:
break
if not cursor:
time.sleep(delay)
delay = min(delay * 2, 60)
print("credits used:", page.get("credits_used"))
它只停留在起始 URL 所在的域名内,并跳过网站要求 robots 不要访问的任何内容。具体如下:
WebReaderAPI 或对所有 robots 禁止访问的页面会被跳过,且不扣费。include_paths 和 exclude_paths 接受诸如 /blog/* 这样的简单模式;用它们来避开标签页、搜索页和归档页。当你知道网站但不知道具体页面时,使用整站抓取 (crawl);当已经拥有 URL 列表时,使用批量读取。整站抓取 (crawl) 会从 sitemap 和链接中发现页面。批量读取则精确读取你发送的 URL,每个任务最多 100 个,可跨任意数量的网站。
对于知识库的每周刷新,常见模式是先执行一次整站抓取 (crawl) 来建立索引,然后对 sitemap 中 lastmod 发生变化的页面进行批量读取。这样每周的成本只落在真正发生变动的页面上。
每读取一个页面消耗 1 个积分,需要浏览器的页面消耗 2 个。一个 1,500 页、在服务端渲染的文档站点花费 1,500 积分;同一站点若构建为单页应用,花费可能高达 3,000 积分。
截至 2026 年 10 月,三个典型任务:一个 300 页的产品手册可用 10,000 个网页 积分包(US$3.75);十个各 2,000 页的文档站点可用 50,000 个网页(US$14.25);一个 400,000 页的归档可用 500,000 个网页(US$50)。被跳过和失败的页面免费。
根据页面数量确定积分包大小,然后为需要浏览器的页面留出余量。积分永不过期,剩余积分可用于下一次整站抓取 (crawl)。
10,000 个网页
US$3.75
US$0.38/千页
50,000 个网页
US$14.25
US$0.28/千页
100,000 个网页
US$21.75
US$0.22/千页
500,000 个网页
US$50
US$0.10/千页
所有套餐均包含: 正文提取 · 需要时渲染 JavaScript · 失败和被拒绝的页面不收费 · 积分永不过期
每个任务最多 10,000 页,且限于起始 URL 所在的域名。对于更大的网站,可用 include_paths 将其拆分为多个任务,例如每个栏目一个任务。
会。它读取 robots.txt 中列出的或位于常规位置的 sitemap,然后沿其读取的页面上的链接继续抓取。如果 robots.txt 允许,仅由 sitemap 列出的页面仍会被读取。
使用 WebReaderAPI 不行。如果 robots.txt 禁止我们的爬虫或所有 robots 访问,那些页面会被跳过且不扣费。如果网站声明了 Content-Signal: ai-input=no,我们不会为你读取。我们从不试图绕过此类选择。
可以。GET https://webreaderapi.com/api/v1/jobs/{job_id} 会返回截至目前已读取的页面以及一个 cursor;持续分页直到任务处于 done 状态且不再有 cursor 为止。
不会。积分按页计算,任务在你设定的 limit 达到时停止。因 robots.txt 而跳过的页面以及失败的页面不消耗积分。
低至 US$0.07/千页 · 无需 KYC
获取 API 密钥