Web 服务器通常生成目录索引,列出目录中的文件和附加元数据。这些页面的内容和格式各不相同,但通常具有很强的共同相似性。
常见的操作包括根据列出的时间戳识别目录中最新的文件或下载最新版本的文件。这些涉及下载 html 索引、提取文件名、模式匹配、日期解析、排序等常见步骤...我通常使用 wget、grep、awk、sort 和 date 在 bash 中编写一个最小的解决方案,但我'我很好奇是否有人研究过涉及 html 文件索引问题的通用解决方案。
是否有任何(最好是命令行)实用程序来处理/解析这些 html 文件?
显然,这是一项不平凡的任务,不可能在所有情况下都能完美执行,但在 90% 的情况下避免重新实现轮子的解决方案肯定是可能的。
答案1
我假设您的意思是您想要解析 HTTP 响应中包含的 HTML。
如果您熟悉 PHP,则可以使用curl 检索页面,然后使用 PHP 的将字符串解析为其 DOM 结构DOM文档类,然后您可以通过查询 DOMDocument 实例来检索感兴趣的innerHTML。
作为命令行 PHP 脚本
#!/usr/bin/php
// curl or readfile or whatever for url and assign HTML body into variable $html
$html = '<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title></title>
link
</head>
<body>
<h1>stuff in directory listing</h1>
</body>
</html>
';
$DOM = @DOMDocument::loadHTML($html);
$element = $DOM->getElementsByTagName("h1")->item(0);
echo $element->nodeValue;
无论如何我都会这样做,原因是因为
- 它将提供灵活的实现,您可以适应网络服务器给您的不同响应。
- 尝试通过正则表达式解析内容会非常困难(我猜)