Webサーバーは通常、ディレクトリインデックスを作成して、ディレクトリ内のファイルと追加のメタデータを一覧表示します。これらのページはコンテンツと形式が異なりますが、しばしば強い類似点を共有します。
一般的なタスクには、リストされたタイムスタンプに基づいてディレクトリから最新のファイルを識別すること、または最新バージョンのファイルをダウンロードすることが含まれます。これには、htmlインデックスのダウンロード、ファイル名の抽出、パターンの一致、日付の解析、並べ替えなどの一般的な手順が含まれます。私は通常wget、grep、awk、sort、dateを使用してbashで最小限のソリューションを作成しますが、次のような場合はかなり疑問に思います。誰もがhtmlファイルのインデックス付けに関連する問題に対する一般的な解決策を調べたことがあります。
これらのhtmlファイルを処理/解析するユーティリティ(好ましくはコマンドライン)はありますか?
明らかにこれは些細なことではなく、すべての場合に完全には実行できないが、ホイールを再実装しないソリューションは確かに90%の場合に可能です。
答え1
私はあなたがHTTPレスポンスに含まれているHTMLを解析したいと思います。
PHPに精通している場合は、カールを使用してページを検索し、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;
とにかく、その理由は
- これは、Webサーバーが提供するさまざまな応答に適応できる柔軟な実装を提供します。
- 正規表現でコンテンツを解析するのは非常に難しいでしょう。
ここに一つあります。デモ-http://codepad.viper-7.com/apsiKR