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


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

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

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

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/11/12 01:58:30
  • 終了:2010/11/18 06:32:16

ベストアンサー

id:Silvanus No.1

Silvanus回答回数174ベストアンサー獲得回数672010/11/12 07:02:08

ポイント47pt

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でも直にテキストファイルとして一発保存できます。私の

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

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

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

id:ReoReo7

ありがとうございます。

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

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

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

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

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

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

2010/11/18 06:31:43

その他の回答(2件)

id:Silvanus No.1

Silvanus回答回数174ベストアンサー獲得回数672010/11/12 07:02:08ここでベストアンサー

ポイント47pt

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でも直にテキストファイルとして一発保存できます。私の

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

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

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

id:ReoReo7

ありがとうございます。

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

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

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

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

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

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

2010/11/18 06:31:43
id:asuka645 No.2

あすか回答回数856ベストアンサー獲得回数972010/11/12 08:05:17

ポイント27pt

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


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


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

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

id:ReoReo7

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

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

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

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

2010/11/12 13:01:15
id:niwa-mikiho No.3

niwa-mikiho回答回数508ベストアンサー獲得回数382010/11/14 14:30:25

ポイント37pt

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



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


・ LWP 初期化

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

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

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

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

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


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



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

id:ReoReo7

ありがとうございます。

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

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

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

2010/11/14 17:58:34
  • id:ReoReo7
    3週間程前、何も知識が無い頃質問させて頂いた質問です。
    (参考までに載せておきます)
    ●VBAでIEを操作しようとしていた頃の質問
    http://q.hatena.ne.jp/1285149069
    ・・・jacopettiさん初め、スクレイピングという切り口を教えて下さった方々に深く感謝致します。
  • id:ReoReo7
    開発環境はxamppでしたが、レンタルサーバーに移管しました。
    phpMyAdminで作ったMySQLへのアクセスコード等がちょっとが相違あり、今はプログラムの骨格をxamppでテストし終わったこともあって、MySQLへのアクセスが絡まないもの等プログラムの微細な調整はほとんどWEB上で直接テストしています。
    今後は基本骨格以外はなるべくWEBで直接テストしていくのが開発が速いのか、面倒でもxamppでテストしながら都度WEBへアップロードして開発していくべきなのか迷っていますので併せてコメント頂けると幸いです。
  • id:ReoReo7
    言語はとりあえずPHPでやることにしました。
    (↓私の質問)
    ●PHPでTIDYをインストールする方法を知りたい
    http://q.hatena.ne.jp/1289507277#a1046400
    他にもいろいろとアドバイス募集中ですので、よろしくお願いします。
  • id:Galapagos
    スキルの低い人がスクレイピングをやると、警察に逮捕されることもあるから注意しましょう。
    http://librahack.jp/
  • id:ReoReo7
    これは面白い記事ですね。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません