php curl抓取网页数据( 网络抓取是收集数据以将您的业务提升到新水平的好方法)
优采云 发布时间: 2022-03-07 19:24php curl抓取网页数据(
网络抓取是收集数据以将您的业务提升到新水平的好方法)
使用 Zenscrape 进行*敏*感*词*数据提取
网络抓取是采集数据以将您的业务提升到新水平的好方法。它允许您自动化从各种来源提取有用内容的过程。
不幸的是,自动网络抓取并不总是那么容易。一些 网站 可能会主动阻止您提取这些数据,而其他 网站 是使用基本上使原创网络抓取工具无用的工具构建的。
在这个 文章 中,我将向您展示如何使用 Zenscrape 来克服所有这些问题,并从您喜欢的任何 网站 中*敏*感*词*提取数据,而不必担心被阻止。
使用 Zenscrape 的优势
我将通过列出 Zenscrape 的一些惊人功能来开始讨论,这些功能可以帮助您完成工作并将其与其他爬虫区分开来。
JavaScript 渲染
许多 网站 现在都在积极使用 JavaScript 向访问者提供内容。这意味着一个简单的爬虫在访问网页时可能会看到与用户通过浏览器实际访问 网站 时不同的内容。
Zenscrape 通过允许您使用它的 API 在现代的无头 Chrome 浏览器中呈现请求来解决这个问题。它支持所有流行的库和框架,例如 Vue、Angular 和 React 等。
*敏*感*词*提取数据
有些项目要求您*敏*感*词*地抓取网络,这种情况会带来一系列挑战。您更有可能被 网站 阻止,并且一次只需一个请求即可获取所需的所有数据将花费更长的时间。
Zenscrape 通过为您提供巨大的 IP 池和自动代理轮换来轻松隐藏您的抓取机器人来克服这些问题。它还使您可以选择并发请求以快速抓取大量数据。
使用 Zenscrape 抓取内容
我们现在将学习如何使用 Zenscrape API 从不同类型的 网站 中抓取内容。
您可以通过在 网站 上创建一个帐户来开始。Zenscrape 提供免费计划,因此您只需注册即可遵循本教程。它将使您可以访问可用于发出请求的 API 密钥。您可以阅读详细文档,了解如何在 PHP、Python 和 Node.js 等各种语言和环境中使用 API 发出请求。
在您成功注册并登录后,文档中的代码片段将预先填充您的 API 密钥。
您还可以在“帐户仪表板”页面上查看其他与帐户相关的信息,例如使用情况统计信息和您的 API 密钥。
从维基百科中提取内容
Zenscrape 允许您从网页中提取 HTML,然后您可以使用您选择的解析器对其进行操作。我们将在此处的示例中使用基于 PHP 的 DiDOM 解析器,但您也可以使用 Zenscrape 博客 文章 中提到的其他一些解析器。
我们将抓取关于灯塔的 Wikipedia 页面作为示例。这是我们使用 Zenscrape 的 API 提取 HTML 的 PHP 代码。
此时的变量 $html 收录 Zenscrape 从 Wikipedia 页面提取的标记。标记的前几行如下所示:
White Shoal Light, Michigan - Wikipedia
... and more ...
我们现在可以将此 HTML 传递给我们的 DOM 解析器,以从 Wikipedia 文章 中提取主标题、第一段或第一张图片等信息。
这是我得到的输出,带有一些基本的 CSS 样式。
从 网站 中提取本地化内容
Top 网站 Reddit 主页的外观会因您访问的国家/地区而异。这个 网站 试图用在您所在位置相关且流行的内容来填充它。
在我们的示例中,我们将使用 Zenscrape 通过将国家/地区设置为美国和英国来从 Reddit 主页获取一些头条新闻。但是,Zenscrape 允许您从 230 多个不同的国家/地区选择一个位置来抓取内容。令人惊讶的是,您只需在 API 请求中指定两个参数即可完成所有这些操作。
这是我们使用 Zenscrape 的 API 为 Reddit 的英国主页获取 HTML 的代码。
如您所见,这与我们在上一节中使用的代码没有太大区别。不过,这一次,我们传递了两个名为 premium 和 location 的额外查询参数。将 premium 设置为 true 允许您使用住宅代理。之后,您可以使用 location 来指定要访问 URL 的国家/地区。我在这个例子中设置了它。
Zenscrape 关于网络抓取的文档提供了有关其他此类参数的更多详细信息。
与我们之前的示例类似,此变量 $html 存储我们返回的提取的 HTML。现在,我们可以以任何我们喜欢的方式解析和使用这个 HTML。
我使用它来显示标题列表以进行演示。
这是我作为美国访问者使用 Zenscrape API 抓取 Reddit 时得到的结果。
JavaScript 渲染后提取内容
Zenscrape 为您解决的另一个问题是,当访问者访问由库和框架(如 Vue、React 或 Angular)构建的 网站 时,您可以轻松提取将呈现给访问者的 HTML。
我创建了一个简单的 CodePen 演示来演示此功能。基本的 网站 爬虫将在此页面上看到与实际 网站 访问者不同的内容,因为页面上的内容是使用 React 呈现的。
当使用简单的 cURL 或 file_get_contents() 请求时,您将在根元素中获得以下 HTML。
Nothing to see here!
另一方面,Zenscrape 为您提供了在现代无头 Chrome 浏览器中呈现请求的选项。这意味着您使用 Zenscrape API 返回的 HTML 与用户在访问页面时将看到的 HTML 相同。
这是我用来提取在运行 JavaScript 后最终显示给用户的 HTML 的代码。
如您所见,您需要做的就是传递两个参数,render 和 wait_for_css。将 render 设置为 true 将告诉 Zenscrape 它需要使用无头浏览器来获取内容,因为涉及到 JavaScript。您可以将 wait_for_css 设置为所需元素的 CSS 选择器。
上面的代码片段允许您提取可以解析的 HTML 以获得以下内容。
最后的想法
Zenscrape 为那些想要*敏*感*词*提取数据的人解决了许多网络抓取问题。它的优点在于它易于实现,并且不需要您花费数天或数周的时间来学习 API。
正如您在上面的三个示例中所见,Zenscrape 只需几个请求即可为您处理从本地化到 JavaScript 渲染的所有事情。您只需要编写几行代码,一切都会立即启动并运行。甚至还有一个请求构建器,您可以使用它来获取使用 Python、Node.js、PHP 等发出请求所需的代码。
您可以使用 Zenscrape API 执行许多任务,例如获取销售线索或跟踪电子商务平台上产品的定价和可用性。访问 Zenscrape 并为自己阅读。有一个每月 1,000 积分的免费计划。您可以在几分钟内注册一个免费的 Zenscrape 帐户并自己测试所有功能。