从 html 文件中获取选定的标签

从 html 文件中获取选定的标签

我有一个页面源代码,我需要从这个文件中获取所有标签。顺序很重要。我需要外部和内联脚本。标签必须包含在输出中。我正在寻找一个控制台 Linux 工具。

我尝试搜索,但什么也没找到,于是我使用 jQuery 获取此信息并将其粘贴到文件中。但此输出有一些奇怪的编码,所以我需要以传统方式解析它。

例如:输入:

<html>
  <head>
    <script src="script1.js"></script>
    <script src="script2.js"></script>
    <script>alert('hello');</script>
  </head>
  <body>
    <div id="main">...</div>
    <script src="footer.js">
  </body>
</html>

输出:

<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
<script src="footer.js">

第二个示例,仅输出 src 属性。

script1.js
script2.js
inline script 
footer.js

答案1

您可以使用grep它及其唯一匹配的参数(-o),例如:

$ grep -o "<[^>]*>" <(curl -s http://example.com/)

这将打印包括订单在内的所有 html 标签。

要仅包含<script>标签,请尝试(index.html使用您的文件更改):

$ grep -Eo "<script.*(</script>|>)" index.html

为了获取文件名(从src属性),您可以通过添加另一个来扩展grep,例如:

$ grep -Eo "<script.*(</script>|>)" index.html | grep -o '"[^"]*"' | tr -d '"'

上述语法无法帮助您处理许多不同的 html 代码变体,因此对于更复杂的解决方案,使用正则表达式解析 html一般不建议,因此你应该使用适当的工具(你喜欢的语言或查看这些外壳工具)。

答案2

我知道你已经接受了答案,但我还想补充一点,你可以看看xpath

它专门用于 xml 样式的数据。

在你的情况下,这个 xpath 将是

//script

这里也是有人使用 xpath 解析 HTML 的另一个例子

相关内容