如何在shell中解析数​​百个html源代码文件?

con*_*fin 23 shell text-processing html

我有几百个 html 源代码文件。我需要<div>从这些文件中的每一个中提取特定元素的内容,因此我将编写一个脚本来遍历每个文件。元素结构是这样的:

<div id='the_div_id'>
  <div id='some_other_div'>
  <h3>Some content</h3>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议一种方法,通过该方法我可以the_div_id使用 linux 命令行从文件中提取 div以及所有子元素和内容吗?

Ste*_*n D 29

HTML-XML-utils的包,在大多数主要Linux发行版,拥有一批具有HTML和XML文档打交道时非常有用的工具。对于您的情况特别有用的是hxselect,它从标准输入中读取并根据 CSS 选择器提取元素。您的用例如下所示:

hxselect '#the_div_id' <file
Run Code Online (Sandbox Code Playgroud)

根据您提供的内容,您可能会收到有关输入格式不正确的投诉。这种抱怨是针对标准误差的,因此可以在需要时轻松抑制。另一种方法是使用 Perl 的 HTML::PARSER 包;但是,我会将其留给具有 Perl 技能的人比我自己的还少。

  • `hxselect` 对输入格式比 `pup` 更加挑剔。例如,我得到“输入格式不正确”。(也许尝试标准化?)` 与 `hxselect` 其中 `pup` 只是解析它。 (2认同)

小智 13

Try pup,一个用于处理 HTML 的命令行工具。例如:

pup '#the_div_id' < file.html
Run Code Online (Sandbox Code Playgroud)