无限滚动 通过每次用户向下滚动到页面底部时获取和呈现新数据来工作。 如果您正在寻找一种简单的方法来抓取包含需要滚动的连续或冗长内容的网页,例如 Facebook 群组、Twitter 推文,甚至是 Quora 中的搜索结果,那么本指南可以帮助您节省宝贵的时间和精力。

在本文中,我们将向您展示如何创建一个简单的网络爬虫,使用我们的自动滚动网页 抓取 API 使用滚动参数。 我们将在 Node.js 中编写代码,并使其尽可能适合初学者。

在我们开始编码之前,重要的是要了解它的 3 个关键要素:

  • Javascript 令牌:这是在您注册时提供给您的令牌 Crawlbase(以前的 ProxyCrawl) 并且需要传递下面的参数。
  • &滚动参数:将其传递给 API 将允许您的请求以 10 秒的间隔滚动页面。
  • &scroll_interval:此参数允许 API 在加载页面后滚动 X 秒。 最大滚动间隔为 60 秒,滚动 60 秒后,API 会捕获数据并将其返回给您。

使用 Node 滚动网站

首先,打开您的命令提示符 (Windows) 或终端并检查您的系统上是否安装了 Node.js,方法是键入 node --version 如果您还没有 Node 或者它已经过时,我们建议您下载并安装 最新的 NodeJS 版本 第一。

成功安装/更新节点后,继续创建一个文件夹,如下所示:

创建节点项目

在本例中,我们将使用 Visual Studio Code 作为示例,但您也可以使用自己喜欢的代码编辑器。

创建一个新文件,你可以命名它 quoraScraper.js

VSCode 节点创建

现在我们可以开始编写我们的代码了。 首先,我们可以声明我们的常量变量,以便我们可以使用必要的参数正确调用 Crawling API,如下所示:

1
2
3
4
5
6
常量 https= 要求('https');
常量 网址= 编码URI组件('https://www.quora.com/search?q=crawlbase');
常量 选项= {
主机: 'api.crawlbase.com',
: '/?token=JS_TOKEN&scraper=quora-serp&scroll=true&url=' + 网址,
};

请记住,您可以将 URL 与您希望抓取的任何 URL 交换,该 URL 应该具有相应的 &刮板参数 和你实际的 JS_TOKEN javascript令牌.

我们代码的下一部分将获取 JSON 格式的请求并在控制台中显示结果:

1
2
3
4
5
6
7
8
9
10
11
12
HTTPS
.请求(选项, (响应) => {
身体 = '';
响应
.on('数据', () => (正文 += 块))
.on('结尾', () => {
常量 JSON = JSON.解析(身体);
领事.日志(JSON。原始状态);
领事.日志(JSON。身体);
});
})
.结束();

完成后,按 F5 (Windows) 查看结果,或者您也可以从终端或命令提示符处执行此操作:

1
C:\Nodejs\project> 节点 quoraScraper.js

由于我们尚未设置滚动间隔,因此默认为 10 秒滚动,这自然会返回更少的数据。

使用节点获取更多数据

现在,如果您希望滚动更多(即 20 秒),您必须在 &scroll_interval 范围。 完整代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
常量 https= 要求('https');
常量 网址= 编码URI组件('https://www.quora.com/search?q=crawlbase');
常量 选项= {
主机: 'api.crawlbase.com',
: '/?token=JS_TOKEN&scraper=quora-serp&scroll=true&scroll_interval=20&url=' + 网址,
};

HTTPS
.请求(选项, (响应) => {
身体 = '';
响应
.on('数据', () => (正文 += 块))
.on('结尾', () => {
常量 JSON = JSON.解析(身体);
领事.日志(JSON。原始状态);
领事.日志(JSON。身体);
});
})
.结束();

如果您打算滚动 90 秒,请确保将您的连接保持打开 60 秒。 您可以在我们的 文件.

如果再次运行代码,您应该会获得更多数据,如下例所示:

JSON 输出

至此,我们用不到 20 行代码就成功完成了一个可以滚动浏览网页的简单爬虫。 请记住,如果您有现有的网络抓取工具,则可以集成它,并且您也可以自由使用我们的 Crawlbase(以前的 ProxyCrawl)Nodejs 库 作为替代。

当然,这只是一个开始,您可以用它做很多事情,我们希望它可以为您的网络抓取知识增加价值。