• ベストアンサー

ホームページの更新日時の取得

use LWP::Simple; ($content_type, $document_length, $modified_time, $expires, $server) = head $url; とすると,$modified_timeに$urlのアドレスのWebページの更新日時が 得られるとあったのですが,何も値が取得できないのはなぜでしょうか. $expiresにだけ NCSA/1.3という値が入っていました.

質問者が選んだベストアンサー

  • ベストアンサー
  • syg
  • ベストアンサー率54% (6/11)
回答No.3

LWP::UserAgent使ってましたがtimeoutがうまくいってくれないので 使うのをやめてしまいました。^^; で、日付が取得できないのはどのサーバーでもでしょうか? サーバーによっては日付取得させてくれないのもあるみたいです。 仕組みがわかってしまえばsocketも簡単ですから、LWP::Simpleに 頼らず自力で書いてしまっては?参考URLを見れば必要なコマンドも わかりますし。 http://rie.h.kobe-u.ac.jp/~ohkubo/script.shtml のsky_lib.plなんかも参考になります。

参考URL:
http://www.glasscom.com/tone/articles/nos1998b/www/
sunasearch
質問者

補足

参考URLをありがとうございます.大変参考になりました. LWPでは日付が取得できるサーバとできないサーバがあるようです. 素人な者ですこしお伺いしたいのですが, 自力で書くというのは HTTP::Requestなどでヘッダ情報を取得するということでしょうか? LWPで取得できない場合に,「自力」で書くと取得できるようになるのでしょうか?

その他の回答 (3)

  • dany
  • ベストアンサー率35% (27/77)
回答No.4

>LWPでは日付が取得できるサーバとできないサーバがあるようです. LWPではというよりも、設定なのかなんなのか、そういうサーバーは 存在します。取得できないページをNetscapeで見て[情報を見る]を やってみてください。同じように日付が取得できないのではないかと。 WWWDがそうですが、HEADで更新日が取得できないもの、動的出力される ページなどは、ページのサイズを見て更新されたかどうかを判断 しています。もし更新チェッカを作ろうとしているのならばサイズで 判断してはどうでしょう。 >自力で書くというのは >HTTP::Requestなどでヘッダ情報を取得するということでしょうか? 違います。use Socket;のみ用いて、あとのやりとりは全て自前で 書くということです。前回参考としてあげたURLにtelnetでアクセス する方法がありますが、まさにそれをperlでやるのです。 そのほうがあらゆる環境で動くものが作れますし、モジュールに まかせっきりよりか、何が問題なのかがわかってくるでしょう。 Socketの使い方は同じく前回あげたsky_lib.plが参考になります。

sunasearch
質問者

お礼

ありがとうございます. いろいろと勉強になります. 一説によると,サーバのバージョンが古くてLast-modifiedに対応していないのではとのことでした. どうやら,そのようなサーバのHPはgoogleでは検索されるのに, 更新日時も表示するgooでは検索にひっかからないようです. gooの人たちが頑張ってもだめということは, 取得は不可能という結論でいいのかな.

回答No.2

CGIは正常に稼動してますでしょうか?

sunasearch
質問者

補足

get $url; でWebページを獲得することはできています.

回答No.1

Perlはサーバに対応してますか? もし、無理であるならばJavaで取得するってのはどうでしょうか?

sunasearch
質問者

補足

早速の回答ありがとうございます. 「Perlがサーバに対応」の意味が少しわかりかねるのですが, もう少し詳しい説明が頂けないでしょうか? よろしくお願いします.

関連するQ&A