特定のページへ定期的(数分間隔)にアクセスして、HTMLソースの内容を解析し、時々刻々変化するデータ(例:天気予報・株価・為替相場・店の混雑情報等)をデータベース化したいと考えています。PCでアクセス可能なウェブページについては既に「Webパトロール 監視&メール通知」という高機能なフリーウェアで実現できるのですが、私が今回データベース化を望んでいるのは携帯電話からでないとアクセスできないページで、User-Agentを携帯電話のブラウザ(例:私の所有機であるSoftbank 923SHなら"SoftBank/1.0/923SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1")に偽装する必要があると思いますが、上記のフリーウェアには偽装機能が装備されていません。

User-Agentを任意の文字列、或いは、携帯電話(機種不問)に偽装できる機能を持ったHTMLソース保存プログラムを御存知でしたらお教えいただきたく存じます。定期的なアクセス・保存、HTMLソースの解析部分については何とか自作and/or他のフリーウェアで何とかします。
何卒宜しくお願い申し上げます。
[参考] Vectorライブラリ「Webパトロール 監視&メール通知」
http://www.vector.co.jp/soft/winnt/net/se348133.html

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/09/05 13:50:14
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:TREEG No.1

回答回数255ベストアンサー獲得回数34

ポイント100pt

プログラムで自作出来るのでしたら、取得するプログラムも一緒に書いてみてはいかがでしょうか?

また、自作であればプログラム言語によって色々違いますが、通常UAは書き換えできますので何でも良いと思います。

個人的には、テキスト解析はperlの領分と思っていますので一応例を書いておきます。

.

例えば、perl(Windows 環境であればActivePerlなど)であればこのような感じになります。

取得した物をそのままテキスト解析ですね。

#----test.pl----

use LWP;

my $ua = LWP::UserAgent->new;

my $res = $ua->get(

"http://q.hatena.ne.jp/1283652996",

"User-Agent" => "DoCoMo/2.0 SH901iC(c100;TB;W24H12)",

);

open(FH,">save.html");

print FH $res->content;

close(FH);

#------------

.

ところで、少し疑問なのですが、なぜ、この質問を?と思っています。自作できるならUA付けてアクセスすれば良いだけでは?と思っています。

もし、プログラム入門者でとりあえず、プログラムは少し読めるが、ホームページの取得まではよく分からん。

という感じでしたら、手っ取り早くやりたいソフトを作るにはプログラムサンプルがたくさん載っている逆引き大全シリーズの分厚い本をお薦めしておきます。索引をざっと見て、全く知らない言語でも、必要な所を、コピペするだけで動いてくれますので、真面目にプログラムを勉強する方にはお勧めしませんが、個人でとりあえず動く物が作りたいという時にはめちゃくちゃ役に立ちました。

.

他、外部ソフトを使う物では、SYSYAはいかがでしょうか?

コマンドラインで使えますのえ自作プログラムとの組み合わせでも一番使いやすいと思います。

また、レジュームやリダイレクト、UA偽装、ページサイズやエラーコードの取得などブラウザできそうな事は大抵できるようです。

: ----test.bat----

SYSYA /J /T+5 /HU"DoCoMo/2.0 SH901iC(c100;TB;W24H12)" /GQ:\ http://q.hatena.ne.jp/1283652996"

pause

: ------------

.

なお、最近、個人製作のクローラーで逮捕者(岡崎市立中央図書館事件)が出ていますので注意して下さい。

id:Silvanus

早速のご回答誠に有難うございます!

正に貴殿が記されている通り「ホームページの取得まではよく分からん」状態です(苦笑)。

ご推薦の参考図書も購入したいのですが、今回は急ぎなので…。

今の私にはSYSYAを使用するのが最も手っ取り早いですが

後日ActivePerlでも挑戦してみたいと思います。

アクセス頻度は数分~10数分に1回程度なので、

岡崎市立図書館の件の様なことにはならないと思います(笑)。

2010/09/05 13:06:42
  • id:Silvanus
    > TREEGさん
    早速SYSYAで試してみましたが、私が今一番DB化したいページについてはダメでした…(涙)。
    自分の携帯がソフトバンクモバイル(SBM)のものなので
    試しにSBMのウェブコンテンツ開発者向け資料を探して読んでみると、
    必須リクエストヘッダがUser-Agent以外にも数多くあり
    SYSYAのコマンドラインオプションでは対応できないものも含まれておりました。
    こうなるとPerlを使う以外に無さそうですね(汗笑)。頑張ってみます。
    本当に有難うございました!
  • id:TREEG
    イルカ賞ありがとうございます。ただ、対応出来ず本当に残念です。
    携帯サイトは私の思っている以上にややこしいのかもしれません。
    IPレベルではなく、単純にリクエストヘッダだけで良ければ、perlであれば行けると思います。
    ただ、ここまで細かい設定を要求されることはほとんど無かったので自信なしですが・・・。
    ちなみに、先の逆引き書籍についてですが、ほとんどプログラムやったこと無い人がパズル感覚でプログラムを簡単に作るにはベストだと思いますが、リクエストヘッダを細かく指定してなど細かい事までは載っていませんので、使うモジュールやそれに関連したHPを探すしか無いかもしれませんね。
    ちなみに、hatenaはリダイレクトまでSYSYAと先のperlで上手くいってくれたのですけどね。
  • id:Silvanus
    コメント有難うございます。
    IPレベルの話だと、私の能力では「死んだ亀」状態(手も足も出ない)ですね(苦笑)。
    SBMの技術資料には、IP云々の記載は無かった様に思いますので
    必須リクエストヘッダの問題さえ解決できれば多分大丈夫ではないかと思います。
    一応プログラム経験は多少なりともありますので、
    リクエストヘッダの細かい指定等については何とかできると思います…恐らく(笑)。
  • id:TREEG
    >必須リクエストヘッダの問題さえ解決できれば多分大丈夫ではないかと思います。
    PCでのブラウザUAの偽装などで本当に接続可能か調べてからの方が良いかもしれません。
    他、http://www.nttdocomo.co.jp/service/imode/make/content/download/
    など携帯キャリアなどが出してるエミュレータ経由でパソコンから接続できるか調べてから、プログラム作成に取りかかっても良いかもしれません。
    perlを覚えるよりは気軽に検証できそうです。
  • id:Silvanus
    貴重なアドバイス誠に有難うございます!
    ブラウザUAの偽装だけでは無理そうです…。
    エミュレータは思い付きませんでした!早速試してみたいと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません