システムが絡む制作をしていると、URLが同じでも条件によって表示を変更する動的なページの制作をすることがあります。動的なサイトだとよくありますね。
ECでも例えば売り切れの時は「SOLD OUT」を表示して、カートボタンを非表示にする。そのかわり、「商品リクエスト」ボタンを表示するとか「在庫が入ったら通知する」みたいなボタンを出したりします。これは、その時の状態(在庫)によって、表示を変えています。
ページ制作側は、一つのページに要素を全部入れちゃうこともあれば、別ページとして制作する場合もあります。
今回は非常にニッチなケースですが、これでルーチン化できたのでいいかなというものをご紹介します。
制作したものをそのまま渡せばいいのですが、今回は以下の要件があり、そのまま渡せませんでした。
ということで、wgetしなければならないとなりました(アドバイスくれた方、感謝です)。
参考サイトにスクリプトがあるので、今回はこちらを利用させていただきます。本当に感謝です。
このソースコードを、filelist.phpなどの名前で保存して、一覧を取得したいディレクトリに置きます。
参考サイト ディレクトリ内ファイル一覧表示
<?php
$DIR = "./"; //一覧表示するディレクトリ
function printfile($dir) {
$opendir = opendir($dir);
while($file = readdir($opendir)) {
if($file === "." or $file === "..") {
continue;
}
$file = $dir . "/" . $file;
if(is_dir($file)) {
printfile($file);
continue;
}
if(preg_match("/\.s?html$/", $file) and filesize($file) > 100) {
$filename = preg_replace("/^[\.\/]+/", "", $file);
echo "<a href=\"$file\">$filename</a><br>\n";
}
}
closedir($opendir);
}
?><html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FileList</title>
</head>
<body><?php
printfile($DIR); //ファイル一覧表示
?></body>
</html>
filelist.php にブラウザでアクセスして、ファイル一覧とリンクが付いているかを確認します。なお、コードの見ると、HTMLかSHTMLのみ一覧化するように拡張子の判別処理が入っています。他の拡張子の一覧を取得するならば、そのあたりをカスタマイズするとよさそうです。
wget コマンドは、WindowsにもMacにも標準で入っていないっぽいです。自分はWindows使いなので、Cygwinを入れてコマンドをたたいています。Windowsな方は、ぜひCygwin を入れましょう。
こんな感じのコマンドで実行します。
$ wget --http-user=Basic認証ユーザー名 --http-passwd=Basic認証パスワード -r -l8 https://ホスト名/filelist.php
開発中のデータなので、Basic認証がかかっていました。認証用のユーザーIDとパスワードをオプションで設定します。再帰的に取得するならば、-r は欠かせません。-l で階層の深さを指定しましょう。
今までまともにwgetコマンドを触っていませんでしたが、これ便利ですね。サーバ移行とかするときに、静的なページだけであれば、これだけで以降用のデータが作れちゃいそうです。
参考URL 【 wget 】 ファイルをダウンロードする
このサイトは、エックスサーバー で運営しています。