覚え書き 他のサイトの更新時間を知る方法いろいろ
ネットで調べ事をしていると、見つけたホームページの情報が古くて、ガッカリする時があります。
どこかに日付があればいいけど、無い場合は文脈から判断するしかなくて、なんだかワジワジ~してしまう。 (沖縄の方言で、もどかしい の意味)
特に花火やお祭りなどのイベント系だと、今年の情報より、何年か前の記事が検索上位に来ることも多いみたい。
そんな時は、ブラウザーのURLの欄に次の一行を入れてenter!
javascript:alert(document.lastModified)
すると、そのページの更新時間がダイヤログで表示されます。(IE6/8、Safari、Firefox、Google ChromeでOK)
この方法はブログなどの動的なページでは使えないけど(ブログには日付が入ってますが…)、昔ながらのホームページでは有効です。
上記は、ちょっと調べ事をしていて見つけた副産物。
ご参考まで。
→ 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系の方々、良い方法があったら御指南下さいね。
あまりにも”分からな過ぎる自分”に、
正直笑ってしまいました。
でも、面白いからまた来ますね~~。
あざ~~~~~っす!!!
すみません。
このへんのネタは、あまり一般的では無いですよね。
詳しい人がヒントくれないかなぁ。と思って書いたもので…。