想要保持领先并做出更明智决策的企业比以往任何时候都更依赖网络数据。Crawlbase 提供强大的网络抓取工具,让这一切变得简单。其最好的产品之一, 爬虫库 Crawler,可帮助您异步收集数据,而无需等待响应。您可以使用 爬虫库 Crawling API,而不是等待或不断检查结果, Crawler 自动使用 webhook 将抓取的数据发送到您的服务器 — 全部实时发送。这意味着可以更快速、更轻松地收集数据。

在这篇博客中,我们将仔细研究 Crawlbase Crawler 以及它的异步处理和 webhook 集成如何使大规模网络抓取变得顺畅且轻松。在本博客的最后,您将了解如何设置和使用 Crawlbase Crawler 有效。

创建 Crawlbase Crawler

要使用 Crawler,您必须首先从 Crawlbase 帐户仪表板创建它。根据您的需要,您可以创建两种类型的 Crawler、TCP 或 JavaScript。使用 TCP Crawler 爬取静态页面。使用 JS Crawler 当您需要抓取的内容是通过 JavaScript 生成时,要么因为它是一个 JavaScript 构建的页面(React、Angular 等),要么因为内容是在浏览器上动态生成的。

例如,我们将从 XNUMX月XNUMX日.

显示“创建”的图像 Crawler 没有选项的页面

要创建 Crawler,我们要么创建一个 webhook,要么使用 Crawlbase Storage API。如果您不想创建自己的 webhook 并存储您的 Crawler 安全生成,Crawlbase 通过其 爬虫库 Storage API.

爬虫库 Storage API 选项

通过设置您的 Crawler 使用存储 webhook 端点,您可以安全地存储爬取的数据,同时增加隐私和控制,而无需担心存储限制。为此,只需在创建您的 Crawler.

如果您不想使用 Crawlbase Storage,您可以指定自己的 webhook 端点来直接接收数据。以下步骤说明了如何创建符合 Crawlbase 的 webhook Crawler的要求使用 Python Django 框架.

1. 创建Webhook

A 网络挂接 是一种基于 HTTP 的回调机制,允许一个系统在发生特定事件时向另一个系统发送实时数据。以 Crawlbase 为例 Crawler webhook 应该……

  1. 可从 Crawlbase 服务器公开访问
  2. 准备好接收 POST 调用并在 200 毫秒内响应
  3. 在 200 毫秒内响应状态码 200、201 或 204,无内容

让我们在 Python Django 框架中创建一个简单的 webhook 来接收响应。请确保您已 Python 并安装 Django。要使用 Python 中的 Django 创建一个简单的 webhook 接收器,请按照以下步骤操作:

步骤1

使用以下命令创建新的 Django 项目和应用程序:

1
2
3
4
5
6
7
8
9
10
11
# 创建项目的命令:

django-admin startproject webhook_project

# 使用终端进入 webhook_project 目录:

cd webhook_project

# 创建 webhook_app:

python manage.py startapp webhook_app

步骤2

在webhook_app目录中,创建一个views.py文件并定义一个视图来接收webhook数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# webhook_app/views.py

django.快捷方式 进口 给予
django.views.decorators.csrf 进口 csrf_豁免
django.http 进口 响应
进口 GZIP

DEF 保存数据到文件(data): # 假设您要将数据保存到名为“webhook_data.txt”的文件中
- open('webhook_data.txt', '一种') as 文件:
文件.写入(STR(数据)+ '\n')

@csrf_exempt
DEF webhook_接收器(请求): # 将请求添加到队列中进行异步处理
if 请求方法== 'POST':
尝试:
decompressed_data = gzip.decompress(request.body)
操作系统错误 as e:
回报 Http响应(“错误:无法解压缩数据”,状态=400)

# 将解压后的字节数据转换为字符串(或进一步处理)
data_string = 解压缩数据.decode('拉丁1')

# 将数据保存到文件中
保存数据到文件(数据字符串)

# 返回204给爬虫
回报 HttpResponse(状态=204)

这款 webhook_receiver 函数装饰有 @csrf_exempt 允许外部服务在没有 CSRF 保护的情况下发送数据。它会尝试从请求主体解压缩 Gzip 编码的数据,如果成功,则将其(假定为 HTML)解码为字符串。然后,数据将附加到名为 webhook_data.txt.

虽然此示例通过将抓取的 HTML 保存到单个文件来简化事情,但实际上,您可以根据需要从通过 webhook 收到的 HTML 中提取和处理任何类型的数据。

步骤3

配置 URL 路由 在 webhook_project 目录中,编辑 urls.py 文件以添加 webhook 接收器的 URL 模式:

1
2
3
4
5
6
7
8
9
10
# webhook_project/urls.py

django.contrib 进口 管理员
django.urls 进口
webhook_app.views 进口 webhook_接收器

网址模式 = [
小路('行政/', admin.site.urls),
小路('webhook/crawlbase/',webhook_receiver,名称='webhook_receiver'),
]

步骤4

启动 Django 开发服务器来测试 webhook 接收器:

1
2
3
# 启动服务器的命令
# 注意:对于 Python 版本 3 的 Linux 系统,请在启动时使用 python3
python manage.py运行服务器

该应用程序将开始在本地主机端口 8000 上运行。

启动 Django 开发服务器

创建 webhook 后,我们接下来需要做的就是将 webhook 公开到互联网上。

为了在这个例子中做到这一点,我们使用 恩格罗克。 由于我们的 webhook 在端口 8000 的 localhost 上运行,因此我们需要在端口 8000 上运行 ngrok。

ngrok 控制台

在 8000 端口运行 ngrok 后,我们可以看到 ngrok 提供了一个公共的转发 URL,我们可以使用它来创建爬虫。使用 ngrok 的免费版本,此链接将在 2 小时后自动过期。

创建 Crawlbase Crawler 使用 Webhook

现在,让我们创建一个爬虫 XNUMX月XNUMX日.

创建新 Crawler 来自 Crawlbase Crawler XNUMX月XNUMX日

首先设置你的 Crawler 一个唯一的名称,例如我们例子中的“test-crawler”,并在回调选项中指定您的 webhook URL。在此示例中,webhook URL 将是一个公共 Ngrok 转发 URL,后跟 webhook 路由地址。

将 URL 推送至 Crawler

现在您已经创建了“测试爬虫”,下一步是推送您希望它抓取的 URL。为此,您需要使用 Crawlbase Crawling API,以及两个附加参数: crawler=YourCrawlerNamecallback=true默认情况下,您每秒最多可以推送 30 个 URL 到 Crawler。如果您需要提高此限制,可以联系 Crawlbase 客户支持.

下面是一个使用 Python 的示例 Crawlbase Python 库 将 URL 推送到 Crawler.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 安装crawlbase库
!pip 安装爬网库

# 导入爬虫API
爬行基地 进口 抓取API

# 使用您的 TCP 令牌初始化 CrawlingAPI
api = 爬行API({ '令牌': 'YOUR_CRAWLBASE_TOKEN' })

# 使用随机 Amazon URL 作为示例
网址 = [
'https://www.amazon.com/AIRLITE-Microphone-Licensed-Microsoft-Accessories-x/dp/B08JR8HF2G',
'https://www.amazon.com/Cabinet-Stainless-Kitchen-Drawer-Handles/dp/B07SPXKNXN',
'https://www.amazon.com/Mkono-Decorative-Decoration-Organizer-Farmhouse/dp/B08292QMQR',
]

网址 in 网址:
# 异步发送指定选项的抓取请求
响应 = api.get(url, 选项={'打回来': '真的', “爬行者”: “测试爬虫”})

# 打印响应体的内容
打印(回复['身体'])

运行代码后, Crawling API 将所有 URL 推送到 Crawler 队列。

示例输出:

1
2
3
b'{"rid":"d756c32b0999b1c0507e364f"}'
b'{"rid":"455ee207f6907fbd6168ac1e"}'
b'{"rid":"e9eb6ce579dec207e8973615"}'

对于您推送到的每个 URL Crawler 使用 Crawling API,您将收到一个 RID(请求 ID)。您可以使用此 RID 来跟踪您的请求。一旦 Crawler 处理 HTML 数据时,它将自动推送到您在创建时指定的 webhook Crawler,保持该过程异步。

这款 Crawler 提供允许您执行不同操作的 API,例如查找、删除、暂停、取消暂停等。您可以了解有关它们的更多信息 点击这里.

请注意: 总页数 Crawler 等待队列的上限为 1 万。如果合并队列超过此限制,您的 Crawler 推送将暂时暂停,您将收到电子邮件通知。一旦队列中的页面数量降至 1 万以下,推送将自动恢复。

从接收数据 Crawler

将 URL 推送到 Crawler, Crawler 将抓取与每个 URL 关联的页面,并将以抓取的 HTML 作为主体的响应推送到 webhook。

1
2
3
4
5
6
7
8
9
10
:
“内容类型” => “文本/纯文本”
“内容编码” => “gzip”
“原始状态” => 200
“PC 状态” => 200
“摆脱” => “您在推送呼叫中收到的 RID”
“网址” => “被抓取的URL”

Body:
页面的 HTML

响应的默认格式是 HTML。如果您希望接收 JSON 格式的响应,可以传递查询参数“format=json” Crawling API 同时将数据推送到 Crawler. JSON 响应将如下所示

1
2
3
4
5
6
7
8
9
10
11
12
:
“内容类型” => “gzip/json”
“内容编码” => “gzip”

Body:
{
“电脑状态”: 200,
“原始状态”: 200,
“摆脱”: “您在推送呼叫中收到的 RID”,
“网址”: “被抓取的URL”,
“身体”: “页面的 HTML”
}

由于我们只推送了 3 个 URL 到 Crawler 在上例中,我们收到了来自 Crawler 在我们的 webhook 上。

接收数据 Crawler

就像在 webhook_receiver 函数中,我们已编码将请求主体保存到 .txt 文件。我们将能够像这样看到该文件中的所有 HTML 内容。

抓取的 HTML 数据

一旦您在 webhook 上获取 HTML,您就可以根据需要从中抓取任何内容。

重要提示:您可以更新您的 Crawler 随时通过 Crawlbase 仪表板。如果 Crawler 向您的 webhook 发送响应,但您的服务器未返回成功响应,则 Crawler 将自动重试抓取页面并重新尝试交付。这些重试将计为成功请求,并将收取费用。此外,如果您的 webhook 出现故障, Crawlbase 监控机器人 将检测到并暂停 Crawler。 该 Crawler 一旦 webhook 恢复在线,就会恢复。如需更改这些设置,您可以联系 爬库技术支持.

如需更全面的了解,请参阅 爬虫库 Crawler 文件.

使用自定义标头增强回调功能

除了标准回调机制之外,Crawlbase 还提供了一个可选功能,允许您通过“callback_headers”参数接收自定义标头。 此增强功能使您能够传递用于识别目的的附加数据,从而促进与您的系统更加个性化和高效的集成。

自定义标头格式:

自定义标头的格式如下:

HEADER-NAME:VALUE|HEADER-NAME2:VALUE2|and-so-on

确保正确的编码对于无缝数据传输和解释至关重要。

使用范例

对于这些标头和值对 { ”id”: 123, type: “etc” }

&callback_headers=id%3A123%7Ctype%3Aetc

接收客户标头

Crawler 将在响应的标头部分发送所有自定义标头。您可以轻松地与爬取的数据一起访问它们。

1
2
3
4
5
6
7
8
9
10
11
12
13
:
“内容类型” => “gzip/json”
“内容编码” => “gzip”
“ID” => 123
“类型” => “ETC”
Body:
{
“电脑状态”: 200,
“原始状态”: 200,
“摆脱”: “您在推送呼叫中收到的 RID”,
“网址”: “被抓取的URL”,
“身体”: “页面的 HTML”
}

通过此升级,您现在可以更加灵活地控制通过回调收到的信息。 通过利用自定义标头,您可以根据您的特定要求定制回调数据,从而使我们的服务比以往更轻松地满足您的独特需求。

结语

爬虫库 Crawler 为网络爬虫和数据抓取提供强大而高效的解决方案。凭借其强大的异步功能,Crawlbase 可帮助企业快速收集大量数据、接收实时更新并顺利管理数据提取过程。Crawlbase Crawler 对于需要抓取大量数据的企业来说,这是一种流行的工具,可帮助他们在当今快速发展的数字世界中保持领先地位。

尽管如此,尽管 Crawlbase Crawler 是一个强大的工具,负责任地使用它至关重要。始终确保您遵守网站服务条款、遵循道德抓取做法并尊重负责任的数据提取准则。通过这样做,我们都可以为健康和可持续的网络生态系统做出贡献。让我们以负责任和有效的方式充分利用网络。

常见问题

问:使用 Crawlbase 有什么好处 Crawler?

  1. 效率: Crawler的异步功能可以更快地从网站提取数据,从而节省宝贵的时间和资源。
  2. 易用性:凭借其用户友好的设计, Crawler 简化了通过 webhook 推送 URL 和接收爬取数据的过程。
  3. 可扩展性: Crawler 可以有效地处理大量数据,使其成为抓取大型网站和处理大量数据集的理想选择。
  4. 实时更新:通过设置滚动时间变量,你可以控制何时 Crawler 将抓取的网站发回,提供最新数据的实时访问。
  5. 数据驱动决策: Crawler 为用户提供来自网络数据的宝贵见解,帮助用户做出数据驱动的决策并获得竞争优势。

问:Crawlbase 如何 Crawler 使网页抓取异步化?

爬虫库 Crawler 通过允许用户将 URL 推送到 Crawler 并继续工作,而无需等待抓取过程完成。提交 URL 时, Crawler 将它们添加到队列并在后台处理。它返回请求 ID(rid)而不是抓取的数据,因此您可以在抓取数据的同时跟踪进度 Crawler 有效。一旦数据准备就绪,它就会自动推送到您指定的 webhook,让您无需等待抓取完成即可收到结果。这种异步方法加快了流程并提高了效率。

问:我需要使用 Python 来使用 Crawlbase 吗? Crawler?

不,你不需要只使用 Python 来使用 Crawlbase Crawler。 该 Crawler 为各种编程语言提供多个库,使用户能够使用他们喜欢的语言与其交互。无论您熟悉 Python、JavaScript、Java、Ruby 还是其他编程语言,Crawlbase 都能满足您的需求。此外,Crawlbase 还提供 API,允许用户访问 Crawler的功能,而无需依赖特定的库,因此具有不同语言偏好和技术背景的广泛开发人员都可以使用它。这种灵活性可确保您能够无缝集成 Crawler 使用最适合您需求的语言融入到您的项目和工作流程中。