TIL-用 curl + w3m + awk 从 HTML 表格提取数据

💡 原文中文,约1900字,阅读约需5分钟。
📝

内容提要

本文介绍了如何使用 curl、w3m 和 awk 从 HTML 表格中提取数据。主要步骤包括:将 HTML 转换为标准 XHTML、提取目标表格、渲染为格式化文本、按固定宽度提取所需列,最终提取“名称”列的公司名。需注意安装相关工具和调整列宽。

🎯

关键要点

  • 从 HTML 表格提取结构化数据是运维中的常见需求。

  • 使用 curl、w3m 和 awk 可以有效提取数据,避免手动复制粘贴的麻烦。

  • 整个数据提取过程分为四个步骤:将 HTML 转换为标准 XHTML、提取目标表格、渲染为格式化文本、按固定宽度提取所需列。

  • 使用 hxnormalize 和 hxselect 来处理 HTML,确保格式正确并提取目标元素。

  • w3m -dump 将 HTML 渲染为纯文本表格,自动对齐列。

  • awk 的 FIELDWIDTHS 功能用于按字符宽度切分字段,提取所需的公司名称。

  • 需要注意安装 html-xml-utils 和 w3m 工具,并根据实际表格调整列宽。

🔎

延伸解读

工具链的重要性

在运维中,使用 curl、w3m 和 awk 组合提取 HTML 表格数据,可以显著提高工作效率。这种方法避免了手动复制粘贴的繁琐,尤其在处理复杂表格时,能够确保数据的准确性和一致性。掌握这些工具的使用,将为日常数据处理提供便利。

注意安装依赖

在使用本文提到的工具之前,确保安装 html-xml-utils 和 w3m。这些工具并非系统默认安装,缺少它们将导致无法执行数据提取过程。此外,使用前需确认所用的 awk 版本支持 FIELDWIDTHS 功能,以避免因版本不兼容而导致的错误。

列宽调整的灵活性

在提取数据时,列宽的设置至关重要。根据实际表格的内容调整 FIELDWIDTHS,可以有效避免数据错位。若不确定列宽,可以先运行 w3m 步骤,观察输出结果,确保字段的准确分割。这种灵活性使得数据提取过程更加可靠。

延伸问答

如何使用 curl 提取 HTML 表格中的数据?

使用 curl 可以抓取网页内容,然后结合 hxnormalize、hxselect 和 w3m 等工具提取数据。

提取 HTML 表格的步骤是什么?

提取步骤包括:将 HTML 转换为标准 XHTML、提取目标表格、渲染为格式化文本、按固定宽度提取所需列。

awk 的 FIELDWIDTHS 功能有什么用?

awk 的 FIELDWIDTHS 功能用于按字符宽度切分字段,以便提取特定列的数据。

需要安装哪些工具才能执行数据提取?

需要安装 html-xml-utils 和 w3m 工具,具体命令为:pacman -S html-xml-utils w3m 或 apt install html-xml-utils w3m。

使用 w3m 渲染 HTML 表格有什么好处?

w3m 可以将 HTML 渲染为纯文本表格,并自动对齐列,方便后续处理。

在提取数据时需要注意哪些事项?

需要注意安装相关工具、调整列宽,并确保使用 GNU Awk,因为其他版本不支持 FIELDWIDTHS。

🏷️

标签

➡️

继续阅读