- ベストアンサー
ホームページの更新日時の取得
use LWP::Simple; ($content_type, $document_length, $modified_time, $expires, $server) = head $url; とすると,$modified_timeに$urlのアドレスのWebページの更新日時が 得られるとあったのですが,何も値が取得できないのはなぜでしょうか. $expiresにだけ NCSA/1.3という値が入っていました.
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
LWP::UserAgent使ってましたがtimeoutがうまくいってくれないので 使うのをやめてしまいました。^^; で、日付が取得できないのはどのサーバーでもでしょうか? サーバーによっては日付取得させてくれないのもあるみたいです。 仕組みがわかってしまえばsocketも簡単ですから、LWP::Simpleに 頼らず自力で書いてしまっては?参考URLを見れば必要なコマンドも わかりますし。 http://rie.h.kobe-u.ac.jp/~ohkubo/script.shtml のsky_lib.plなんかも参考になります。
その他の回答 (3)
- dany
- ベストアンサー率35% (27/77)
>LWPでは日付が取得できるサーバとできないサーバがあるようです. LWPではというよりも、設定なのかなんなのか、そういうサーバーは 存在します。取得できないページをNetscapeで見て[情報を見る]を やってみてください。同じように日付が取得できないのではないかと。 WWWDがそうですが、HEADで更新日が取得できないもの、動的出力される ページなどは、ページのサイズを見て更新されたかどうかを判断 しています。もし更新チェッカを作ろうとしているのならばサイズで 判断してはどうでしょう。 >自力で書くというのは >HTTP::Requestなどでヘッダ情報を取得するということでしょうか? 違います。use Socket;のみ用いて、あとのやりとりは全て自前で 書くということです。前回参考としてあげたURLにtelnetでアクセス する方法がありますが、まさにそれをperlでやるのです。 そのほうがあらゆる環境で動くものが作れますし、モジュールに まかせっきりよりか、何が問題なのかがわかってくるでしょう。 Socketの使い方は同じく前回あげたsky_lib.plが参考になります。
お礼
ありがとうございます. いろいろと勉強になります. 一説によると,サーバのバージョンが古くてLast-modifiedに対応していないのではとのことでした. どうやら,そのようなサーバのHPはgoogleでは検索されるのに, 更新日時も表示するgooでは検索にひっかからないようです. gooの人たちが頑張ってもだめということは, 取得は不可能という結論でいいのかな.
- Black_Tiger
- ベストアンサー率21% (300/1391)
CGIは正常に稼動してますでしょうか?
補足
get $url; でWebページを獲得することはできています.
- Black_Tiger
- ベストアンサー率21% (300/1391)
Perlはサーバに対応してますか? もし、無理であるならばJavaで取得するってのはどうでしょうか?
補足
早速の回答ありがとうございます. 「Perlがサーバに対応」の意味が少しわかりかねるのですが, もう少し詳しい説明が頂けないでしょうか? よろしくお願いします.
補足
参考URLをありがとうございます.大変参考になりました. LWPでは日付が取得できるサーバとできないサーバがあるようです. 素人な者ですこしお伺いしたいのですが, 自力で書くというのは HTTP::Requestなどでヘッダ情報を取得するということでしょうか? LWPで取得できない場合に,「自力」で書くと取得できるようになるのでしょうか?