数据抓取对于任何想要从网站中提取有意义信息的人来说都是一个游戏规则改变者。借助 Chrome DevTools 和 HAR 文件等工具,您可以轻松发现隐藏的 API 并捕获有价值的数据流。在这篇文章中,我将分享如何使用这些工具从杂货配送平台 Blinkit 中抓取产品数据,并向您展示如何做到这一点。
为什么我为我的杂货应用程序选择数据抓取
在构建杂货配送应用程序时,我面临着一个重大挑战——缺乏真实数据。从头开始创建我自己的数据集将非常耗时,并且不会为项目提供任何真正的优势。我需要一个更快、更实用的解决方案,这让我产生了抓取数据的想法。通过从 Blinkit 提取产品详细信息,我可以获得准确的真实数据来测试和改进我的应用程序,而不会浪费资源。
网络爬取数据的常用方法
-
手动复制粘贴
-
网页抓取工具
- Scrapy、BeautifulSoup 或 Puppeteer 等工具可以自动执行从网站提取数据的过程。
- 最适合大规模结构化数据提取。
-
API 集成
- 一些网站提供公共 API 来直接合法地访问其数据。
- 需要了解 API 端点和身份验证流程。
-
浏览器开发工具
- 直接在浏览器中检查网络请求、捕获 HAR 文件或分析页面元素。
- 非常适合识别隐藏的 API 或 JSON 数据。
-
无头浏览器
- 使用 Puppeteer 或 Selenium 等无头浏览器库来自动导航和抓取。
- 非常适合需要 JavaScript 渲染或交互的网站。
-
解析 HAR 文件
- HAR 文件捕获网页的所有网络活动。可以解析它们以提取 API、JSON 响应或其他数据。
- 对于具有动态内容或隐藏数据的网站很有用。
-
HTML 解析
- 使用 BeautifulSoup (Python) 或 Cheerio (Node.js) 等库解析 HTML 内容来提取数据。
- 对于简单的静态网站有效。
-
从 PDF 或图像中提取数据
- PyPDF2、Tesseract (OCR) 或 Adobe API 等工具可在无法在线获取数据时帮助从文件中提取文本。
-
自动脚本
- 用 Python、Node.js 或类似语言编写的自定义脚本,用于抓取、解析和存储数据。
- 提供对抓取过程的完全控制。
-
第三方 API
- 使用 DataMiner、Octoparse 或 Scrapy Cloud 等服务来为您处理抓取任务。
- 节省时间,但根据服务计划可能会有限制。
我选择了HAR文件解析
什么是 .har 文件?
HAR(HTTP Archive)文件是一种 JSON 格式的存档文件,用于记录网页的网络活动。它包含有关每个 HTTP 请求和响应的详细信息,包括标头、查询参数、有效负载和计时。 HAR 文件通常用于调试、性能分析,在本例中还用于数据抓取。
HAR 文件的结构
HAR 文件由多个部分组成,主要部分是:
-
日志
- HAR 文件的根对象,包含有关记录的会话和捕获的条目的元数据。
-
条目
- 对象数组,其中每个条目代表一个单独的 HTTP 请求及其相应的响应。
主要属性包括:
-
request:有关请求的详细信息,例如 URL、标头、方法和查询参数。
-
响应:有关响应的信息,包括状态代码、标头和内容。
-
计时:请求-响应周期(例如 DNS、连接、等待、接收)所花费时间的细分。
-
页面
- 包含有关会话期间加载的网页的数据,例如页面标题、加载时间和页面打开的时间戳。
-
创作者
- 有关用于生成 HAR 文件的工具或浏览器的元数据,包括其名称和版本。
为什么我选择HAR文件解析
HAR 文件提供网页上所有网络活动的全面快照。这使得它们非常适合识别隐藏的 API、捕获 JSON 有效负载以及提取抓取所需的确切数据。结构化 JSON 格式还简化了使用 Python 或 JavaScript 库等工具的解析过程。
计划:使用 HAR 文件解析抓取数据
为了有效地从 Blinkit 中提取产品数据,我遵循了一个结构化计划:
-
浏览和捕获网络活动
- 打开 Blinkit 网站并启动 Chrome DevTools。
- 浏览各种产品页面以捕获“网络”选项卡中所有必要的 API 调用。
-
导出 HAR 文件
- 将记录的网络活动保存为 HAR 文件以供离线分析。
-
解析 HAR 文件
- 使用Python解析HAR文件并提取相关数据。
- 创建了三个关键函数来简化流程:
-
功能一:过滤相关回复
- 提取与端点 /listing?catId=* 匹配的所有响应以获取产品相关数据。
-
功能2:清理和提取数据
- 处理过滤后的响应以提取关键字段,如 ID、名称、类别等。
-
功能三:将图片保存到本地
- 识别出数据中所有商品图片URL,并将其下载到本地文件以供参考。
-
执行和结果
- 整个过程,包括一些尝试和错误,大约需要 30-40 分钟。
- 成功抓取了大约 600 个产品的数据,包括名称、类别和图像。
这种方法使我能够快速有效地收集我的杂货配送应用程序所需的数据。
结论
数据抓取如果高效完成,可以节省大量时间和精力,特别是当您需要真实数据来测试或构建应用程序时。通过利用 Chrome DevTools 和 HAR 文件,我能够快速从 Blinkit 中提取有价值的产品数据,而无需手动创建数据集。该过程虽然需要一些尝试和错误,但很简单,并且为开发人员面临的常见问题提供了实用的解决方案。通过这种方法,我能够在一小时内收集 600 个产品详细信息,帮助我推进我的杂货配送应用程序项目。
然而,数据抓取应该始终以符合道德和负责任的方式进行。在抓取之前,请务必确保遵守网站的服务条款和法律准则。如果做得好,抓取可以成为收集数据和改进项目的强大工具。
以上是使用 DevTools 和 HAR 文件抓取数据的详细内容。更多信息请关注PHP中文网其他相关文章!