你有没有想过抓取 javascript 网站? 启用 javascript 的网站是什么意思?
React js、Angular、Vue、Meteor 或任何其他动态构建或使用 ajax 加载其内容的网站。
因此,如果您曾经被困在爬取和抓取 ajax 网站或 javascript 网站,这篇文章会帮助您。
这是一篇动手操作的文章,因此如果您想关注它,请确保您在 Crawlbase(以前称为 ProxyCrawl)中有一个帐户。 获得它很简单,而且是免费的。 所以继续吧 在这里创建一个。
获取要抓取的正确 JavaScript URL
在 Crawlbase(以前的 ProxyCrawl)中注册后,您会看到我们没有任何复杂的界面,您可以在其中添加要抓取的 URL。 我们创建了一个简单易用的 API,您可以随时调用它。 在此处了解有关抓取 API 的更多信息.
因此,假设我们要爬取和抓取完全在 React js 中创建的以下页面的信息。 这将是我们将用于演示目的的 URL: https://ahfarmer.github.io/emoji-search/

如果您尝试从控制台或终端加载该 URL,您将看到您没有从页面中获取所有 HTML 代码。 这是因为代码是由 React 在客户端呈现的,因此使用常规 curl 命令,在没有浏览器的情况下,该代码不会被执行。
您可以在终端中使用以下命令进行测试:
1 | 卷曲 https://ahfarmer.github.io/emoji-search/ |
那么我们如何使用 Crawlbase(以前的 ProxyCrawl)轻松抓取 javascript?
首先,我们将前往 我的帐户 我们将在其中找到两个令牌、常规令牌和 javascript 令牌的页面。
当我们处理一个 javascript 呈现的网站时,我们将使用 javascript 令牌。
对于本教程,我们将使用以下演示令牌: 5aA5rambtJS2
但如果您正在学习本教程,请确保从 我的帐户 页面上发布服务提醒。
首先,我们需要确保对 URL 进行转义,这样如果有任何特殊字符,它就不会与 API 调用的其余部分发生冲突。
例如,如果我们使用 Ruby,我们可以执行以下操作:
1 | 要求 'cgi' |
这将带回以下内容:
1 | https%3A%2F%2Fahfarmer.github.io%2Femoji-search%2F |
伟大的! 我们已经准备好使用 Crawlbase(以前的 ProxyCrawl)抓取我们的 javascript 网站。
抓取 javascript 内容
接下来我们要做的是发出实际请求以获取 javascript 呈现的内容。
Crawlbase(以前的 ProxyCrawl)API 将为我们做这件事。 我们只需要向以下 URL 发出请求: https://api.crawlbase.com/?token=YOUR_TOKEN&url=THE_URL
所以你需要用你的令牌替换 YOUR_TOKEN :) (请记住,对于本教程,我们将使用以下内容: 5aA5rambtJS2
) 并且 THE_URL 必须替换为我们刚刚编码的 URL。
让我们用红宝石来做吧!
1 | 要求 '网络/http' |
完毕。 我们通过 Crawlbase(以前的 ProxyCrawl)向 javascript 网站发出了第一个请求。 安全、匿名且不会被阻止!
现在我们应该从网站返回 html,包括由 React 生成的 javascript 内容,看起来应该像这样:
1 |
|
抓取 javascript 网站内容
现在,只缺少一个从 html 中提取实际内容的部分。
这可以通过许多不同的方式完成,这取决于您用于编写应用程序的语言。 我们始终建议使用现有的众多可用库之一。
这里有一些开源库可以帮助您使用返回的 HTML 进行抓取:
使用 Ruby 进行 Javascript 抓取
使用 Node 进行 Javascript 抓取
使用 Python 进行 Javascript 抓取
我们希望你喜欢这个教程,我们希望很快见到你 Crawlbase(以前的 ProxyCrawl). 快乐爬行!