在当今快速发展的数字环境中,网络数据提取和分析对于寻求获得竞争优势的企业来说变得比以往任何时候都更加重要。 在浩瀚的网络抓取解决方案中,Crawlbase 凭借提供各种定制的创新产品而脱颖而出,这些产品旨在高效、有效地抓取网站并抓取有价值的数据。 Crawlbase 的旗舰产品之一是功能强大的“Crawler”——一种尖端工具,使用户能够使用 Crawling API 异步地将 URL 推送到它。 反过来,爬网程序会认真处理这些请求,并将爬网的页面数据无缝推送回服务器的 Webhook,所有这些都是实时的。 这种智能且简化的工作流程消除了连续轮询的需要,并确保您可以立即访问新提取的数据。 这使得数据检索速度显着加快,使您能够更有效地抓取大量数据。

在本博客中,我们的主要重点将是探索 Crawlbase Crawler 的主要功能。 具体来说,我们将深入研究其卓越的异步功能和无缝 Webhook 集成,这两者在优化大量数据检索方面都发挥着关键作用。

创建 Crawlbase 爬网程序

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

1. 创建Webhook

创建爬虫时,您需要提供您的爬虫的 URL 网络挂钩。 Webhooks 是接收抓取的网站数据实时更新的强大手段。 通过设置 Webhooks,用户可以直接在其服务器端点上毫不费力地接收指定 URL 提取的 HTML 内容,从而实现与其数据处理管道的无缝集成,并促进及时的数据驱动决策。 这种高效、即时的数据传输使用户能够及时了解动态 Web 内容,使 Webhooks 成为 Crawlbase Crawler 功能的重要组成部分。 对于 Crawlbase Crawler webhook 应该...

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

让我们创建一个简单的 Webhook,用于在 Python Django 框架中接收响应。 确保已安装 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”的文件中
打开('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)

步骤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 开发服务器启动 Django 开发服务器来测试 webhook 接收器:

1
2
3
# 启动服务器的命令

python manage.py运行服务器

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

启动 Django 开发服务器

创建 Webhook 后,我们接下来需要的就是使 Webhook 在互联网上公开可用。 为此,我们可以使用 恩格罗克。 由于我们的 webhook 在端口 8000 的 localhost 上运行,因此我们需要在端口 8000 上运行 ngrok。

恩格罗克

2.从Crawlbase仪表板创建新的爬虫

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

从 Crawlbase 仪表板创建新的爬网程序

如果您不希望创建自己的 Webhook 并安全地存储爬网程序生成的数据,Crawlbase 通过其云存储 API 提供无缝解决方案。 通过配置您的爬网程序以利用存储 webhook 端点,您可以轻松存储爬网程序爬取的有价值的数据,并增加隐私和控制。 为此,您可以在创建爬网程序时选择 Crawlbase 存储选项 XNUMX月XNUMX日.

Crawlbase 存储 API 选项

您可以阅读更多内容 Crawlbase 存储 API.

将 URL 推送到爬虫

我们现在已经创建了一个名为“test-crawler”的爬虫。 现在接下来的事情就是将我们想要爬取的URL推送到Crawler上。 您必须使用带有两个附加参数“callback=true”和“crawler=YourCrawlerName”的爬网 API 来推送 URL。 默认情况下,您每秒最多可以向爬网程序推送 30 个 URL。 该限制可以根据要求更改为 客户支持。 让我们看看下面的 Python 示例,它使用 抓取库 由 Crawlbase 提供,用于将 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, 选项={'打回来': '真的', “爬行者”: “测试爬虫”})

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

输出:

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

运行上述代码后,Crawling API 会将所有 URL 推送到 Crawler 队列。 在输出中需要注意的一件事是,我们只从爬行器收到了rid(请求ID),没有任何结果。 这是因为 Crawler 只是让我们摆脱,以便我们可以跟踪请求并继续推送 URL,而不会浪费 Crawler 执行爬行所花费的时间。 这是爬虫提供的异步能力。 我们不必担心输出响应,因为它会在我们创建爬虫时提供的 webhook 处自动推送(一旦准备好)。 爬虫提供了多种API,您可以阅读一下 点击此处.

请注意: 所有 Crawler 等待队列的总和上限为 1 万页。 如果任何队列或所有队列加起来超过 1 万页,您的爬虫推送将暂时暂停,我们将通过电子邮件通知您。 一旦等待队列中的页面低于 1M 页面,爬虫推送将自动恢复。

接收爬虫发送的数据

将 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 格式的响应,可以在将数据推送到爬虫时使用 Crawling API 传递查询参数“format=json”。 JSON 响应将如下所示

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

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

在我们的示例中,我们收到了来自爬虫的 3 个请求,因为我们只向其推送了 3 个 URL。

接收爬虫的数据

与 Webhook 中一样,我们已编码将请求正文保存到 .txt 文件中。 我们将能够像这样看到该文件中的所有 HTML 内容。

抓取的 HTML 数据

在 Webhook 中获取 HTML 后,您可以根据需要从中抓取任何内容。 此外,您可以随时从 Crawlbase 仪表板更改爬网程序的 Webhook URL。 每次 Crawler 向 Webhook 传递响应并且您的服务器未能返回成功响应时,Crawler 都会重新尝试抓取页面,然后再次重试传递。 这些重试被视为成功的请求,因此需要付费。 另外,如果您的 webhook 出现故障, Crawlbase 监控机器人 将检测到它并暂停爬行程序。 当 webhook 再次启动时,爬虫将自动恢复。 您可以联系 技术支持团队 Crawlbase 根据需要更改这些设置。 想要更全面的了解,可以参考 Crawlbase 爬虫文档.

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

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

自定义标头格式:

自定义标头的格式如下:

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

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

使用范例

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

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

接收客户标头

爬网程序将发送响应的标头部分中的所有自定义标头。 您可以轻松访问它们以及抓取的数据。

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”
}

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

结论

Crawlbase Crawler 为用户提供了全面且强大的网络爬行和抓取任务解决方案。 利用其高级功能,您可以无缝收集大量数据、获取实时更新并精确管理动态网站的数据提取过程。 作为寻求可行见解的企业的首选工具,Crawlbase Crawler 是数据主导决策的关键推动者,为企业在现代商业环境中提供竞争优势。

然而,当我们利用这个强大的工具时,重要的是要记住,能力越大,责任越大。 遵守网站服务条款、遵守道德抓取规范以及负责任地使用 Crawlbase Crawler 对于维护健康的网络生态系统至关重要。 让我们负责任地浏览网络。

常见问题解答

问:使用爬行器与不使用爬行器相比有哪些好处?

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

问:为什么我应该使用爬虫?

  1. 高效的数据提取: 爬网程序的异步特性可以更快、更高效地从网站提取数据,从而节省时间和资源。
  2. 实时数据: 通过设置滚动时间变量,您可以实时接收最新的网站数据,确保您拥有最新的信息。
  3. 易于集成: 爬网程序的 Webhook 集成简化了数据检索,使其能够无缝地将爬网页面直接接收到您的服务器。
  4. 可扩展性: 爬虫可以处理大规模数据抓取,使您能够在不影响性能的情况下处理大量信息。
  5. 数据驱动的见解: 通过利用爬网程序,您可以从网络数据中获取有价值的见解,从而支持数据驱动的决策并增强您的竞争优势。
  6. 简化的工作流程: Crawler 的功能消除了连续轮询的需要,简化了数据采集过程并提高了整体效率。
  7. 用户友好界面: Crawler的人性化设计使其可供开发人员、CEO和技术人员使用,确保顺利采用和使用。
  8. 可定制且灵活: 您可以定制爬网程序以满足您的特定要求,从而实现高度灵活且可定制的网络抓取解决方案。

总体而言,使用爬网程序可以简化 Web 数据提取,提高数据可访问性,并为您提供宝贵的见解,以推动您的业务做出明智的决策。

Q:使用Crawler需要使用python吗?

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