人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Webスクレイピングで最も便利なツールのセットをご提示下さい。

当方C、VBA、PASCAL、PHP+MySQL等の初中級者、スクレイピング入門者です。現在VBAでIE操作していますがページ遷移が遅いという悩みがあります。

Rubyが有名なんでしょうか。
やりたいことは2種類あります。
1:非会員制、ブログやショッピングサイトのページ巡回→なるべく早く。ページ情報取得がメイン。キーワード入力+検索は頻度高くない。アドレス指定→表示と情報取得、の速度重視。現在は実用上ちょっと問題があるくらい遅いです。
2:会員制サイトのスクレイピング→クッキー等投げるのが分からない。VBAのUserFormでBeforeNavigate等からHeader等の情報が拾えるのは知っていますが、IE経由せずに操作する方法が良く分かりません。速度は早ければ嬉しいですが現在はIEでやっていて、実用に耐える程度の速さがあります。

今回は主に1:を重視してスクレイピング始めたいと思いました。ぜひ非会員制サイトの情報抜き出しの最速の方法を教えて下さい。将来的には2:にも応用できれば嬉しいです。

●質問者: ReoReo7
●カテゴリ:インターネット ウェブ制作
✍キーワード:IE MySQL Pascal PHP Ruby
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Silvanus
●47ポイント ベストアンサー

VB(A)+外部DLLの組み合わせで宜しければ

フリーの"BASP21 DLL"が目的達成のお役に立つのではないかと思います。

HTTP, FTP, TCP/IP, SMTP, POP3関連の機能をサポートしています。

http://www.hi-ho.ne.jp/babaq/basp21.html

メインコンポーネントのインストーラーはBASP21-2003-0211.exeです。

本DLL群のBASP21.DLLとBINETX.DLLを用いれば

Internet Explorerを介さずに、直接サーバとの間でデータの遣り取りが可能です。

cookieの送出もできます。一度チェックされてみてはいかがでしょうか。

きっと、これが無くてもVB+Windows標準(+α)のコンポーネントだけで

可能なことなのかも知れませんが、こちらの方が少なくとも私にとっては簡単そうなのでw。

HTMLソースでもXMLでも直にテキストファイルとして一発保存できます。私の

乏しい知識ではどうにもなりませんが、恐らくは会員制サイトにも対応できるだけの

機能が備わっているのではないかなぁと感じております。私も

つい最近存在を知ったので本格的にいろいろ試してみようかと思っております。

◎質問者からの返答

ありがとうございます。

>VB(A)+外部DLLの組み合わせで宜しければ

はい。2:のためにこれも求めています。ありがとうございます。

VBAではこれをつかってみてみようと思います。ありがとうございました。

尚、当方の説明不足でしたが、1:はVBAを介さず、ブラウザ越しにスクレイピング結果の取得を1秒以内のレスポンスを目指して行っているので、通信時間節約のため、できましたらVBA等のクライアント用言語ではなくて、PHP等のWEB用言語のものについての情報も募集しております。

追記:コメント欄に示した通り、WEB用スクレイピング言語はPHP+TIDYを使おうと思います。

追記2:コメントをいろいろと頂きましてありがとうございました。


2 ● あすか
●27ポイント

残念ですが、「最速の方法」などありません。


もしCookieではなく独自のセッション管理を行っていたり、UserAgentやRefererを参照しているようなサイトですと、そもそもスクレイピング自体ができない場合があります。


サイト毎に時間をかけて手作業で取り組むしかありません。

処理系はRubyであってもPHPであっても、できることに変わりはありません。

◎質問者からの返答

ありがとうございます。やはり時間かけて手作業ですよね・・・。

PHPでも良いなら、新しい言語に挑戦せず、TIDYをインストールして進めていきたいと思います。IEでページ遷移してたら10秒以上、サーバーからの命令のやり取りに2秒以上かかっていますので、これを1?2秒に短縮を目指しています。概念を説明して頂きましてありがとうございました。

尚、補足として、1:は普通にユーザー認証等は全くおこなっていないページの情報を一部抜き出しているだけです(もちろん、使うこちら側も非商用利用)。

2:について、IEにて自動巡回は実現していますので、スクレイピング?というか作業の自動化は一応実現できています(フォームに入力→送信、の繰り返し)。


3 ● niwa-mikiho
●37ポイント

IE を使うと遅くなるのは 「描画している」 からなので、描画する必要がなくなれば速度はあがります。



Perl では以下の流れとなります。


・ LWP 初期化

・ クッキー設定 (クッキーの送受信は全自動です)

・ ログインする (ログインするとクッキーを受け取りますが、それらは上記の設定で自動で送受信されます)

・ 受信したクッキーはファイルに保存されてるので、次回以降はセッションが切れていなければ

そのファイルを読み込んで勝手に送信してくれます。

あとはいつもどおりアクセスするだけです。


Perl が出来ることが PHP で出来ないことは無いはずなので、試行錯誤になるかと思います。



受信した HTML を開きながらゴリゴリ書くことになるのかな。。。

◎質問者からの返答

ありがとうございます。

IEで動作ページ1に接続(→セッション切れならログイン→動作ページ1)→HTML分析と操作1→動作ページ2→HTML分析と操作2→動作ページ3→・・・

HTML分析と操作はVBAでできているので、後はPerlに移植する感じになるんですね♪

うーん、ちょっと大変ですね(笑)でも、アドバイスを参考に頑張りたいと思います♪

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ