反爬虫大师的网络爬取API

网页爬取曾经需要整个设置。启动Playwright或Puppeteer,管理浏览器实例,处理分页,应对JavaScript渲染页面,编写重试逻辑,并自己解析HTML。在爬取单个页面之前要花费半天的工作。

Cloudflare刚刚将所有这些压缩到一个API调用中。

1、新功能

Cloudflare的浏览器渲染现在在公开测试中有一个/crawl端点。你给它一个URL。它爬取整个网站。它以你需要的任何格式返回内容——HTML、Markdown或结构化JSON。

没有浏览器管理。没有脚本。没有需要照看的基础设施。

这可以在Workers免费和付费计划上使用。

2、基础知识

两个请求。这就是整个工作流程。

开始爬取:

# Initiate a crawl
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/{account_id}/browser-rendering/crawl' \
  -H 'Authorization: Bearer <apiToken>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://blog.cloudflare.com/"
  }'

你获得一个作业ID。爬取在后台异步运行。

检查结果:

# Check results
curl -X GET 'https://api.cloudflare.com/client/v4/accounts/{account_id}/browser-rendering/crawl/{job_id}' \
  -H 'Authorization: Bearer <apiToken>'

完成后,响应看起来像这样:

{
  "total": 10,
  "finished": 10,
  "records": [{
    "url": "https://blog.cloudflare.com/",
    "metadata": { "title": "...", "status": 200 },
    "html": "<!DOCTYPE html>..."
  }]
}

每个页面都返回其URL、标题、HTTP状态和完整内容。干净。

3、为什么这实际上很重要

明显的用例是Cloudflare提到的那些——模型的训练数据、RAG管道、内容监控。所有这些都需要从站点批量提取内容,而在此之前,这意味着要么为爬取服务付费,要么维护自己的爬取服务。

但这里还有一个微妙的事情。这在无头浏览器中运行。这意味着重JavaScript的站点——单页应用程序、React站点、任何需要JS渲染的东西——在返回内容之前都会被正确渲染。大多数爬虫在没有大量设置的情况下都无法做到这一点。

你不会得到因为内容动态加载而半空的原始HTML。你得到的是真正的浏览器看到的东西。

4、值得了解的控制

当基本爬取不够时,端点有可选参数。

爬取深度和页面限制——设置你想要多深并限制总页面数。当你只想要顶级内容并且不需要深入五个链接时很有用。

通配符URL模式——包含或排除特定路径。假设你只想要/blog/内容并想要跳过/docs/。你可以设置它。

URL发现源——爬虫从网站地图、从每个页面上的链接,或两者中发现新页面。你选择。

增量爬取——这是一个实用的。使用modifiedSincemaxAge跳过自你上次爬取以来没有更改的页面。如果你在定期计划上运行它来监控站点,你只获取实际新的内容。

静态模式——设置render: false,爬虫完全跳过无头浏览器,只是获取原始HTML。对于不需要JavaScript渲染的静态网站快得多。

5、它尊重robots.txt

爬虫遵守robots.txt指令,包括crawl-delay。它被设计为像一个有礼貌的机器人而不是锤子。Cloudflare有关于robots.txt和网站地图最佳实践的文档,以帮助你的爬取从一开始就顺利进行。

6、何时实际使用它

一些场景,这取代了大量自定义工作:

在文档站点上构建RAG系统。将爬虫指向文档,以Markdown格式获取所有内容,将其分块,嵌入它。特别是Markdown输出足够干净,可以直接馈送到大多数管道而无需预处理。

监控竞争对手内容。每周运行一次增量爬取,将modifiedSince设置为你上次运行的日期。只有更改的页面才会返回。你确切地看到什么是新的。

创建训练数据。批量爬取站点,收集HTML或结构化JSON,馈送到你的数据管道。异步作业模型处理大型站点而不会超时。

一次性研究。有时你只需要一个站点的所有内容而不需要为它编写脚本。就是这样。

7、结束语

完整的可选参数列表在developers.cloudflare.com/browser-rendering/rest-api/crawl-endpoint。爬取深度、缓存、URL源、通配符模式——所有的都在那里。

robots.txt最佳实践在developers.cloudflare.com/browser-rendering/reference/robots-txt。

端点目前在公开测试中。免费计划用户可以在没有任何付费承诺的情况下尝试它。

两个curl命令爬取整个站点。这就是我们现在所在的位置。


原文链接: Cloudflare crawl: One API Call That Crawls an Entire Website

汇智网翻译整理,转载请标明出处