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

在本文中,我们将向您展示如何创建一个简单的网络爬虫,使用我们的自动滚动网页 抓取 API 与滚动参数。我们将在 Node.js 中编写代码,并使其尽可能对初学者友好。此外,我们还将分享 8 种真正有效的网络数据检索高级网络爬行策略。

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

  • Javascript 令牌:这是在您注册时提供给您的令牌 爬虫库 并且需要传递下面的参数。
  • &滚动参数:将其传递给 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 Nodejs 库 作为替代。

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

什么是网络爬网?

网页抓取 就是从网站上获取有价值的信息,而无需手动点击和复制。为了获得一些技术性的知识,网络爬行涉及使用特殊的工具或程序自动从网页中提取数据。它就像一个机器人,访问网页,下载网页上的所有内容,然后挑选出您感兴趣的特定信息。

网络爬行能为您做什么?

现在,您可能会好奇为什么网络爬行是一个如此有价值的工具。好吧,事情是这样的:网络抓取是您节省时间的好帮手。它可以帮助您从广阔的网络中自动检索各种公共信息的网络数据。它就像一条捷径,随时都可以胜过手动复制。

但这还不是全部!网页抓取对于各种任务来说都是一个方便的技巧,例如:

竞争对手分析: 网络抓取,您可以浏览竞争对手的网站并密切关注他们的服务、价格和营销策略。这看起来像是他们商业策略的通行证。
市场调查: 假设您想了解有关特定市场、行业或利基市场的一切。网页抓取可以为您提供所有有价值的数据。它非常有用,尤其是在房地产等领域。
机器学习: 现在,网络抓取变得更加酷了。您抓取的数据可以成为机器学习和人工智能项目的基础。这就像用可以学习和成长的信息来强化你的算法。

准备好进入网络爬虫的世界了吗?我们将分享一些一流的网络抓取最佳实践,以确保您走在正确的道路上。让我们开始吧!

8 个最适合您的高级网络爬行策略

现在,是时候发现 Web 数据检索的十个最重要和最佳实践了。无论您是处理滚动网站、无限滚动网站,还是设置实时爬虫,这些数据抓取技巧和抓取策略都将在您的网络抓取活动中派上用场。

因此,让我们准备好学习高效且有效的 Web 数据检索的最佳实践!

1.要有耐心:不要超负荷

与您交互的服务器保持良好的关系至关重要。您会看到,在短时间内用太多请求轰炸服务器可能会导致麻烦。您所定位的网站可能还没有准备好处理如此重的负载,这就是可能出现问题的地方。

为了避免这种情况,必须在网络爬虫发出的每个请求之间引入暂停时间。这种喘息空间使您的爬虫能够优雅地浏览网页,而不会对其他用户造成任何干扰。毕竟,没有人想要一个缓慢的网站,对吗?

此外,发出一连串的请求可能会触发反抓取防御。这些狡猾的系统可以检测到过度的活动,并可能拒绝访问您的网络抓取工具。

作为额外提示,请考虑在非高峰时段运行爬网程序。例如,目标网站上的网络流量往往会在夜间减少。这是网络抓取最佳实践的黄金规则之一,确保为所有人提供更流畅的体验。

2. 公共 API 的力量

以下是实现流畅的 Web 数据检索过程的技巧:使用公共 API。如果您不熟悉这个术语,API 代表应用程序编程接口。它就像一个连接,允许不同的应用程序相互通信并共享数据。

现在,许多网站依靠这些 API 来获取网页所需的数据。

那么,这对您的网络抓取活动有何帮助?好吧,如果您正在关注的网站以这种方式运行,那么您很幸运。您可以直接在浏览器的开发工具中(位于网络部分的 XHR 选项卡下)进行这些 API 调用。

通过拦截这些 HTTP 请求,您可以访问所需的数据。此外,大多数 API 都是用户友好的,允许您使用正文或查询参数指定所需的数据。您可以准确地获得您想要的内容,并以易于人类理解的格式获得它。此外,这些 API 甚至可以为您的网络爬行项目提供 URL 和其他有价值的信息。

因此,下次进行 Web 数据检索时,请不要忘记检查是否有公共 API 正在等待让您的生活变得更加轻松。

3. 使用代理服务隐藏您的 IP

现在,这是成功进行 Web 数据检索的经验法则:抓取时切勿暴露您的真实 IP 地址。这是基本的网络抓取最佳实践之一。原因很简单 – 您不希望反抓取系统查明您的实际 IP 并阻止您。

那么,如何保持隐身状态呢?这里有两个词的答案:代理服务。当您的抓取工具向网站发送请求时,代理服务器的 IP 会显示在服务器的日志中,而不是您的 IP。

最好的部分是高级代理服务通常提供 IP 轮换。这意味着您的抓取工具可以不断地在不同的 IP 地址之间切换。对于网站来说,禁止您的 IP 非常具有挑战性,因为它是一个不断变化的目标。

因此,请记住,当您抓取网络时,请将代理服务视为您的基本要求。它们可以帮助您抓取数据,而不会透露您的真实身份。

4. 在你的爬行模式中引入随机性

随机爬行模式是安全数据抓取和保护您免受反抓取技术侵害的最佳爬行策略之一。一些网站采用先进的反抓取技术来分析用户行为以区分人类和机器人。他们寻找模式,而事实是:人类以其不可预测性而闻名。

为了智胜这些警惕的反抓取网站,您必须让您的网络抓取工具表现得像人类用户一样。你是怎样做的?通过在网络抓取逻辑中引入一定的随机性。

这里有一些聪明的举动:

随机偏移: 当你的抓取工具滚动或点击时,加入一些随机性。人类无法像机器人那样精确地移动,你的刮刀也不应该如此。
鼠标移动: 模仿人类光标的有机运动。在这里或那里做一些摆动可以对融入有很大帮助。
点击随机链接: 人类是好奇的生物,会点击各种链接。鼓励您的刮刀也这样做。

通过执行这些操作,您的网络抓取工具在反抓取技术的眼中显得更加人性化。为您的抓取工具赋予虚拟个性,使其不太可能引起怀疑。

5. 注意蜜罐

一些网站采用巧妙的技巧来阻止您的抓取活动——蜜罐。

蜜罐陷阱是战略性地放置在毫无戒心的用户看不到的地方的隐藏链接。它们就像只有入会者才能进入的路径。这些链接通常用 CSS 隐藏,将其显示属性设置为“无”,使普通用户看不到它们。

当您的网络抓取工具进入蜜罐网站时,它可能会不知不觉地陷入反抓取陷阱。反抓取系统会监视您的一举一动,记录您的行为。它始终在收集证据来识别和阻止您的抓取工具。

为了避开蜜罐网站,请务必仔细检查您的抓取工具所针对的网站是否真实。不要被虚假数据的承诺所诱惑。

此外,反机器人系统还会密切关注与蜜罐链接交互的 IP 地址。如果您的 IP 属于此类,则可能会引发危险信号,并且您可能会发现您的抓取工作被阻止。

6. 始终像专业人士一样缓存和记录

我们知道您何时收集有价值的网络数据,并且您希望高效地进行收集。最好的数据抓取技巧之一是缓存。

它的工作原理如下:每当您的抓取工具发出 HTTP 请求并收到响应时,您都将其存储在数据库或日志文件中。这些原始数据对您来说太有价值了。你为什么问?好吧,让我们来分解一下:

离线活动:通过收集爬虫访问的所有 HTML 页面,您实际上是在构建一个离线的 Web 数据库。这意味着您可以返回并提取您在第一次通过时甚至不知道需要的数据。这就像有了第二次机会。

选择性存储:现在,存储整个 HTML 文档可能会占用大量磁盘空间。因此,要聪明一点——仅将关键的 HTML 元素以字符串格式保存在数据库中。这一切都是为了在不牺牲数据的情况下优化存储。

保留抓取日记:为了充分利用它,您的抓取工具应该保留日志。记录它访问的页面、抓取每个页面所需的时间、数据提取操作的结果等等。

7. 通过解决服务智胜验证码

让我们面对现实吧 – 验证码是那些旨在阻止机器人的防护措施。这些小谜题对于人类来说太简单了,但对于机器来说却是一场噩梦。如果您无法解决验证码,您将面临被反机器人系统标记为机器人的风险。

许多流行的内容交付网络 (CDN) 服务都配备了验证码作为其反机器人防御的一部分。那么,你如何克服这个障碍呢?验证码解决服务可以拯救你。

验证码解决服务利用人类工作者的力量来解决这些谜题。这些服务自动执行寻求人类帮助破解验证码的过程。这就像拥有一支由验证码解决专家组成的团队供您使用。

对于那些寻求速度和效率的人来说,可以使用高级网络抓取 API。这些 API 是您绕过验证码障碍的捷径。

8. 站在法律的正确一边

我们完成了数据抓取技巧列表,但没有提及网络数据检索过程的合法性。重要的是不要触犯任何法律。换句话说,您要对自己抓取的内容负责,因此请务必仔细查看目标网站的服务条款。

服务条款向您展示从该特定网站抓取数据的注意事项。这些信息将告诉您什么是公平的,什么是禁止的。它告诉您有关负责任的网络抓取的所有信息。

大多数时候,由于版权限制,您无权在其他地方重新发布抓取的数据。忽视这些规则可能会让您陷入法律混乱,相信我,您想避免这种情况。

包起来!

遵循这些先进的网络数据检索爬行策略,以确保网络抓取过程顺利进行。此外,滚动网站和无限滚动需要技巧,而实时爬虫可以解决您的问题。

刮刮快乐!