你有没有想过抓取 javascript 网站? 启用 javascript 的网站是什么意思?
React js、Angular、Vue、Meteor 或任何其他动态构建或使用 ajax 加载其内容的网站。

因此,如果您曾经被困在爬取和抓取 ajax 网站或 javascript 网站,这篇文章会帮助您。

这是一篇动手操作的文章,因此如果您想关注它,请确保您在 ProxyCrawl 中有一个帐户。 获得它很简单,而且是免费的。 所以继续吧 在这里创建一个。

获取要抓取的正确 JavaScript URL

在 ProxyCrawl 中注册后,您会看到我们没有任何复杂的界面,您可以在其中添加要抓取的 URL。 我们创建了一个简单易用的 API,您可以随时调用它。 在此处了解有关抓取 API 的更多信息.

因此,假设我们要爬取和抓取完全在 React js 中创建的以下页面的信息。 这将是我们将用于演示目的的 URL: https://ahfarmer.github.io/emoji-search/

抓取 Javascript 页面

如果您尝试从控制台或终端加载该 URL,您将看到您没有从页面中获取所有 HTML 代码。 这是因为代码是由 React 在客户端呈现的,因此使用常规 curl 命令,在没有浏览器的情况下,该代码不会被执行。
您可以在终端中使用以下命令进行测试:

1
卷曲 https://ahfarmer.github.io/emoji-search/

那么我们如何使用 ProxyCrawl 轻松抓取 javascript?

首先,我们将前往 我的帐户 我们将在其中找到两个令牌、常规令牌和 javascript 令牌的页面。

当我们处理一个 javascript 呈现的网站时,我们将使用 javascript 令牌。

对于本教程,我们将使用以下演示令牌: 5aA5rambtJS2 但如果您正在学习本教程,请确保从 我的帐户 页面上发布服务提醒。

首先,我们需要确保对 URL 进行转义,这样如果有任何特殊字符,它就不会与 API 调用的其余部分发生冲突。
例如,如果我们使用 Ruby,我们可以执行以下操作:

1
2
要求 'cgi'
CGI。逃脱(“https://ahfarmer.github.io/emoji-search/”)

这将带回以下内容:

1
https%3A%2F%2Fahfarmer.github.io%2Femoji-search%2F

伟大的! 我们已经准备好使用 ProxyCrawl 抓取我们的 javascript 网站。

抓取 javascript 内容

接下来我们要做的是发出实际请求以获取 javascript 呈现的内容。

ProxyCrawl API 将为我们做到这一点。 我们只需要向以下 URL 发出请求: https://api.proxycrawl.com/?token=YOUR_TOKEN&url=THE_URL

所以你需要用你的令牌替换 YOUR_TOKEN :) (请记住,对于本教程,我们将使用以下内容: 5aA5rambtJS2) 并且 THE_URL 必须替换为我们刚刚编码的 URL。

让我们用红宝石来做吧!

1
2
3
4
5
6
要求 '网络/http'
乌里= 的URI('https://api.proxycrawl.com/?token=5aA5rambtJS2&url=https%3A%2F%2Fahfarmer.github.io%2Femoji-search%2F')
响应 = 净::HTTP.get_response(uri)
回复['原始状态']
回复['pc_status']
响应体

完毕。 我们通过 ProxyCrawl 向 javascript 网站发出了第一个请求。 安全、匿名且不会被阻止!

现在我们应该从网站返回 html,包括由 React 生成的 javascript 内容,看起来应该像这样:

1
2
3
4

表情符号搜索
表情符号搜索
...

抓取 javascript 网站内容

现在,只缺少一个从 html 中提取实际内容的部分。

这可以通过许多不同的方式完成,这取决于您用于编写应用程序的语言。 我们始终建议使用现有的众多可用库之一。

这里有一些开源库可以帮助您使用返回的 HTML 进行抓取:

使用 Ruby 进行 Javascript 抓取

使用 Node 进行 Javascript 抓取

使用 Python 进行 Javascript 抓取

我们希望你喜欢这个教程,我们希望很快见到你 代理爬取. 快乐爬行!