admin 管理员组

文章数量: 887017

文章目录

    • 什么是隐藏的网络数据?
    • 如何爬取隐藏的网络数据?
    • 设置
    • 使用 chatgpt 爬取隐藏的网络数据
      • ChatGPT 字符限制
    • 常见问题解答
        • 什么是隐藏的网页数据?
        • ChatGPT 能够抓取隐藏数据吗?
        • AI 能够帮助进行网页抓取吗?
        • 我可以使用 BeautifulSoup 抓取隐藏的网页数据吗?
    • 使用 ChatGPT 抓取隐藏数据总结

网页上的数据可以以不同的形式存在,包括 HTML 和 JavaScript。当数据位于 JavaScript 中时,通常会出现在 script 标签或 JavaScript 变量中。这种形式的数据通常被称为隐藏的网络数据。

要爬取隐藏的数据,我们有两个选择:

  • 使用无头浏览器将其渲染为 HTML,从而使其显示出来。
  • 直接使用文本解析技术找到它。

在本文中,我们将介绍第二种选择以及如何使用 ChatGPT 来爬取隐藏的数据。我们将从快速概述这种技术开始,然后探索一些实际示例。让我们开始吧!

  1. 什么是隐藏的网络数据?
  2. 如何爬取隐藏的网络数据?
  3. 设置
  4. 使用 ChatGPT 爬取隐藏的网络数据
    1. ChatGPT 字符限制
  5. 使用 ScrapFly 爬取隐藏数据
  6. 常见问题解答
  7. 使用 ChatGPT 爬取隐藏数据总结

SCRAPFLY 学院

学习更多网络爬虫知识 ☝️

什么是隐藏的网络数据?

动态网页使用 JavaScript 函数来管理 HTML 的状态。这些函数将实际的 HTML 与数据逻辑隔离开来。这意味着网站可能具有空的 HTML 结构,并且数据会在页面加载时由 JavaScript 渲染到 HTML 中。

由于像 BeautifulSoup 这样的常规网络爬虫工具不支持 JavaScript,因此这些数据不会出现在 HTML 中,因此无法通过 HTML 解析来获取。

例如,在这个模拟产品页面上,我们可以在浏览器中看到这些评论数据:

此外,如果我们在浏览器中检查页面,我们可以看到这些数据存在于 HTML 中:

<div id="reviews" data-page="1">
  <div class="review review-red-potion-1">
    <span>2023-02-10</span>
    <p>The berry flavor is intense and delicious. Great for keeping me focused during my gaming sessions.</p>
  </div>
  <div class="review review-red-potion-2">
    <span>2023-03-20</span>
    <p>Not only does it look cool, but it tastes great and gives a good energy boost!</p>
  </div>
  <div class="review review-red-potion-3">..</div>
  <div class="review review-red-potion-4">..</div>
</div>

然而,如果我们运行一个简单的 BeautifulSoup 爬虫代码,我们会发现 HTML 中没有评论数据:

from bs4 import BeautifulSoup
import requests

r = requests.get('https://web-scraping.dev/product/4?variant=one')
soup = BeautifulSoup(r.content, 'html.parser')

print (soup)
"""
<h3 class="box-title mt-5">Reviews</h3>
<div data-page="1" id="reviews">
</div>
</div>
</div>
</div>
</div>
</div>
<input name="csrf-token" type="hidden" value="secret-csrf-token-123"/>
<script id="reviews-data" type="application/json">[{"date": "2023-02-10", "id": "red-potion-1", "rating": 5, "text": "The berry flavor is intense and delicious. Great for keeping me focused during my gaming sessions."}..]</script>
<script id="reviews-template" type="nunjucks">
"""

存储数据的 div 标签现在是空的,数据似乎被隐藏起来了。

如果我们仔细观察,我们会发现这些隐藏的数据现在以 JSON 格式出现在 <script id="reviews-data"> 标签中。

这些数据应该已经被渲染到 HTML 中。但是由于我们使用的网络爬虫不支持 JavaScript,这个过程无法进行。

因此,总结一下,我们可以看到 HTML 网络爬虫无法直接爬取隐藏的网络数据。让我们看看我们该如何做!

如何爬取隐藏的网络数据?

我们有几种方法可以爬取隐藏的网络数据:

我们可以使用无头浏览器,如 Selenium、Playwright 和 Puppeteer。

这些无头浏览器可以模拟和控制真实的网络浏览器。我们可以使用它们将隐藏的数据渲染到 HTML DOM 中,然后像往常一样使用 BeautifulSoup 进行解析。

然而,这种方法可以将隐藏的数据渲染到 HTML 中,但代价是很大的。无头浏览器消耗大量的时间和资源,因为我们需要运行一个完整的网络浏览器,并等待加载完成。

或者,我们可以直接在网页中查找数据,使用 正则表达式 和 JSON 查找算法。

这种方法允许无浏览器的爬虫直接爬取隐藏的数据,但我们需要提供明确的指示去找到它。这就是 ChatGPT 的用武之地。

我们可以使用 ChatGPT 来编写查找隐藏数据的程序。它的工作原理是将 HTML 代码传递给聊天提示,ChatGPT 将从页面数据中识别和提取隐藏数据。

我们之前已经介绍过了使用 ChatGPT 查找网页元素的类似方法,但现在我们将用它来处理非 HTML 实体。让我们看看如何让 ChatGPT 爬取隐藏的数据。

设置

在我们开始使用 chatgpt 查找隐藏的网络数据之前,让我们先看一下我们的目标网站。
在这个例子中,我们将使用 web-scraping.dev/product/4 页面:

要将此页面传递给 ChatGPT 的聊天提示,我们首先需要复制 HTML,可以直接从浏览器保存(CTRL+s),或使用 Python 进行爬取:

import requests
response = requests.get("https://web-scraping.dev/product/4")
print(response.text)

🙋‍ 如果你有一个非常长的 HTML 文件,你可以将 HTML 代码拆分成较小的块,并将它们作为 chatgpt 的聊天提示,因为 chatgpt 有一个字符限制。

使用 chatgpt 爬取隐藏的网络数据

现在我们已经得到了 HTML 代码,让我们使用 chatgpt 查找隐藏的网络数据。
我们将代码粘贴到聊天提示中,并询问隐藏数据:

ChatGPT 将扫描 HTML 文档,并为我们找到隐藏的数据元素:

我们可以看到它很好地找到了包含评论数据的脚本。接下来,我们可以要求它清理和格式化结果:

你能清理评论数据并将其格式化为 JSON 吗?

ChatGPT 输出的数据

ChatGPT 足够智能,可以找到并呈现这些数据。我们可以要求它为我们生成解析代码,通过进一步的提示请求,例如 "

ChatGPT 字符限制

虽然我们可以使用 chatgpt 爬取隐藏的网络数据,但是复杂的网站和较长的 HTML 文件无法适应聊天提示的限制。
例如,这个 Glassdoor 页面 上有一些隐藏的数据:

Glassdoor 的整个页面数据集位于 NEXT_DATA 脚本元素中

不幸的是,Glassdoor 的巨大 HTML 页面无法适应聊天提示,以便我们利用 chatgpt。

为此,新的 chatgpt 代码解释器功能非常有用,它允许直接上传文件。我们在 使用代码解释器创建 chatgpt 网络爬虫 文章中介绍了这种方法,更多细节可以参考该文章,基本上,我们会直接附加 HTML 文件,而不是将其粘贴到聊天提示中。

如何爬取 Glassdoor(2024 更新)

关于使用 Python 爬取 Glassdoor 的更多信息,请参阅我们的完整入门教程,该教程使用隐藏的网络数据爬取来爬取工作、公司和评论数据。

常见问题解答

让我们通过查看一些与使用 ChatGPT 抓取隐藏网页数据相关的常见问题来总结本文:

什么是隐藏的网页数据?

隐藏的网页数据是在脚本标签或 JavaScript 变量中找到的数据。这种类型的数据通常是隐藏的,因为它需要使用 JavaScript 渲染,而普通的网页抓取工具(如 BeautifulSoup)不支持。

ChatGPT 能够抓取隐藏数据吗?

是的,可以通过将 HTML 页面传递给聊天提示来实现。ChatGPT 将解析 HTML 并在脚本标签或 JavaScript 变量中找到隐藏的网页数据。

AI 能够帮助进行网页抓取吗?

是的,有多种方式可以实现。您可以使用 ChatGPT 代码解释器功能 创建一个 AI 网站抓取工具,它可以在聊天中运行代码。您还可以创建一个 chatgpt 抓取工具来解析 HTML 并提取诸如 XPath 和 CSS 选择器之类的选择器。

我可以使用 BeautifulSoup 抓取隐藏的网页数据吗?

可以,但由于 BeautifulSoup 不支持 JavaScript,您将无法在 HTML 中找到隐藏的数据。您需要使用正则表达式或 JSON 查找算法从 JavaScript 脚本标签中解析数据。

使用 ChatGPT 抓取隐藏数据总结

总之,隐藏的网页数据是保存在脚本标签或 JavaScript 变量中的数据,通过在浏览器中运行 JavaScript 渲染为 HTML。我们可以通过多种方式抓取隐藏的网页数据,包括使用无头浏览器、从脚本标签中解析 JSON 和 ChatGPT。

我们已经看到使用 chatgpt 可以找到并抓取隐藏数据。然而,在使用聊天提示时需要小心。清晰的提示说明和简短的 HTML 代码是获得良好 ChatGPT 网页抓取结果的关键。

本文标签: 爬虫 发现 网页 数据 网络