覚え書き 他のサイトの更新時間を知る方法いろいろ

IGU

2009年10月22日 20:39

ネットで調べ事をしていると、見つけたホームページの情報が古くて、ガッカリする時があります。
どこかに日付があればいいけど、無い場合は文脈から判断するしかなくて、なんだかワジワジ~してしまう。 (沖縄の方言で、もどかしい の意味)

特に花火やお祭りなどのイベント系だと、今年の情報より、何年か前の記事が検索上位に来ることも多いみたい。

そんな時は、ブラウザーのURLの欄に次の一行を入れてenter!

javascript:alert(document.lastModified)

すると、そのページの更新時間がダイヤログで表示されます。(IE6/8、Safari、Firefox、Google ChromeでOK)

この方法はブログなどの動的なページでは使えないけど(ブログには日付が入ってますが…)、昔ながらのホームページでは有効です。


上記は、ちょっと調べ事をしていて見つけた副産物。
ご参考まで。

ちなみに、いつも行くブログの更新情報を知りたい場合は、前に書いたRSSを利用する方法がお手軽ですね。
RSS-主婦にお勧め、激安情報


さて、ここから先は、宇宙語だと思って、飛ばして下さい。

Perlでスクリプトを書いていて、ブログの更新を自動で検知したいと思ったんだけど、意外と方法が見つからない。(「別のサーバーのファイルの更新時間を知る」 等でいろいろ検索)

■1、最初に試した方法
LWP::Simpleを使ってヘッダを取得

use LWP::Simple;
($content_type, $document_length, $modified_time, $expires, $server) = head "サイトURL";
($sec, $min, $hour, $day, $mon, $year) = localtime($modified_time);

最初のjavascriptと同じで、動的なページはLast-Modifiedを返さないので失敗。

■2、次に試した方法
同じく、LWP::Simpleを利用。

$url = "サイトURL";
$file = "保存するファイル名";
mirror($url, $file)

mirrorは、与えられたURLとファイルのデータサイズをチェックし、変更があればドキュメントを取得してファイルに格納。という事なんだけど、サイズが同じでも、ブログ相手だと毎回取得してきてしまうみたい。(サイトマップやRSSでテスト)…失敗。

■3、とりあえず成功した方法
ブログのPING送信機能を借用します。

TI-DAブログを更新すると各PINGサーバーに次のような内容が送られます。

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param>
<value><string>サイトのタイトル</string></value>
</param>
<param>
<value><string>サイトのURL</string></value>
</param>
</params>
</methodCall>

PINGサーバー用にいろいろなモジュールがあるみたいだけど、とりあえず受け取るだけなら、stdin(標準入力)経由でもOKみたい。

use CGI qw(:standard);
@pairs=param();
foreach (@pairs) {$in = param("$_");}

これで$inに送信内容が入るので、続いて処理を書けばOK。

ブログの更新通知PING先リストに自作のCGIを加えて、新しい記事を投稿すれば、自動で作業させる事ができますね。

一応、返信はこんな感じ?。
<?xmlversion="1.0"encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>flerror</name>
<value>
<boolean>0</boolean>
</value>
</member>
<member>
<name>message</name>
<value>
<string>Thanksfortheping.</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>

というわけで、今日、ふと思いついた方法でした。
いつも生暖かく、このブログ見守って下さる技術系/WEB系の方々、良い方法があったら御指南下さいね。


関連記事