使用 DevTools 和 HAR 文件抓取数据

对于任何想要从网站中提取有意义信息的人来说,数据抓取都是一项革命性技术。借助 Chrome DevTools 和 HAR 文件等工具,您可以轻松发现隐藏的 API 并捕获有价值的数据流。在这篇文章中,我将分享如何使用这些工具从杂货配送平台 Blinkit 抓取产品数据,并向您展示如何做到这一点。

为什么我选择为我的杂货应用进行数据抓取

在开发杂货配送应用时,我面临一个重大挑战——缺乏真实数据。从头开始创建自己的数据集非常耗时,而且对项目没有真正的好处。我需要一个更快、更实用的解决方案,这让我想到了抓取数据。通过从 Blinkit 中提取产品详细信息,我可以获得准确的真实数据来测试和改进我的应用,而不会浪费资源。

网络上抓取数据的常用方法

  • 手动复制粘贴 简单但繁琐。适合提取少量数据。
  • Web 抓取工具 Scrapy、BeautifulSoup 或 Puppeteer 等工具可自动从网站提取数据。最适合大规模结构化数据提取。
  • API 集成 一些网站提供公共 API,以便直接合法地访问其数据。需要了解 API 端点和身份验证过程。
  • 浏览器 DevTools 直接在浏览器中检查网络请求、捕获 HAR 文件或分析页面元素。非常适合识别隐藏的 API 或 JSON 数据。
  • 无头浏览器使用无头浏览器库(如 Puppeteer 或 Selenium)实现导航和抓取自动化。非常适合需要 JavaScript 渲染或交互的网站。
  • 解析 HAR 文件 HAR 文件捕获网页的所有网络活动。可以解析它们以提取 API、JSON 响应或其他数据。对于具有动态内容或隐藏数据的网站很有用。
  • HTML 解析使用 BeautifulSoup (Python) 或 Cheerio (Node.js) 等库解析 HTML 内容来提取数据。适用于简单的静态网站。
  • 从 PDF 或图像中提取数据 当数据不可在线获取时,PyPDF2、Tesseract(OCR)或 Adob​​e API 等工具可帮助从文件中提取文本。
  • 自动脚本使用 Python、Node.js 或类似语言编写的自定义脚本,用于抓取、解析和存储数据。提供对抓取过程的完全控制。
  • 第三方 API 使用 DataMiner、Octoparse 或 Scrapy Cloud 等服务为您处理抓取任务。节省时间,但根据服务计划可能会有所限制。
  • 我选择 HAR 文件解析

    什么是 .HAR 文件?

    Harfile Image

    HAR(HTTP 存档)文件是一种 JSON 格式的存档文件,用于记录网页的网络活动。它包含有关每个 HTTP 请求和响应的详细信息,包括标头、查询参数、有效负载和时间。HAR 文件通常用于调试、性能分析,以及数据抓取。

    HAR 文件的结构

    HAR 文件由几个部分组成,主要部分是:

    Structure of HAR File
  • 日志 HAR 文件的根对象,包含有关记录的会话和捕获的条目的元数据。
  • 条目 一个对象数组,其中每个条目代表一个单独的 HTTP 请求及其相应的响应。
  • 主要特性包括:

  • 请求:有关请求的详细信息,例如 URL、标头、方法和查询参数。
  • 响应:有关响应的信息,包括状态代码、标题和内容。
  • 时间:请求-响应周期(例如 DNS、连接、等待、接收)所花费时间的细分。
  • 页面包含有关会话期间加载的网页的数据,例如页面标题、加载时间以及页面打开的时间戳。
  • 关于用于生成 HAR 文件的工具或浏览器的创建者元数据,包括其名称和版本。
  • 为什么选择 HAR 文件解析

    HAR 文件提供了网页上所有网络活动的全面快照。这使得它们非常适合识别隐藏的 API、捕获 JSON 负载以及提取抓取所需的精确数据。结构化的 JSON 格式还可以使用 Python 或 JavaScript 库等工具简化解析过程。

    计划:使用 HAR 文件解析抓取数据

    The Plan

    为了有效地从 Blinkit 中提取产品数据,我遵循了一个结构化计划:

  • 浏览和捕获网络活动打开 Blinkit 的网站并启动 Chrome DevTools。浏览各种产品页面以在“网络”选项卡中捕获所有必要的 API 调用。
  • Inspect Elements and Blinkit opened
  • 导出 HAR 文件将记录的网络活动保存为 HAR 文件以供离线分析。
  • 解析 HAR 文件使用 Python 解析 HAR 文件并提取相关数据。创建了三个关键函数来简化流程:
  • 功能1:过滤相关响应提取与端点/listing?catId=*匹配的所有响应以获取与产品相关的数据。
  • Clean Data function
  • 功能 2:清理和提取数据处理过滤后的响应以提取关键字段,如 id、名称、类别等。
  • Filter data function
  • 功能三:本地保存图片 识别出数据中的所有商品图片URL,并下载到本地文件,以供参考。
  • Get Images Function
  • 执行和结果整个过程(包括一些反复试验)大约需要 30-40 分钟。成功抓取了大约 600 种产品的数据,包括名称、类别和图像。
  • The data extracted

    这种方法使我能够快速有效地收集杂货配送应用程序所需的数据。

    结论

    如果能够高效地进行数据抓取,可以节省大量时间和精力,尤其是当您需要真实数据来测试或构建应用程序时。通过利用 Chrome DevTools 和 HAR 文件,我能够快速从 Blinkit 中提取有价值的产品数据,而无需手动创建数据集。这个过程虽然需要反复试验,但很简单,并为开发人员面临的常见问题提供了实用的解决方案。通过这种方法,我能够在不到一小时的时间内收集 600 个产品详细信息,帮助我推进我的杂货配送应用程序项目。

    然而,数据抓取应始终以合乎道德和负责任的方式进行。在抓取之前,请务必确保遵守网站的服务条款和法律准则。如果操作正确,抓取可以成为收​​集数据和改进项目的强大工具。