質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • スクレイピング

    465questions

    スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

最適なスクレイピング学習方法を教えてください

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 806

coinbura

score 90

許可をもらった複数サイト内の全コンテンツを対象に定期的にクロールしてソースを取得するクローラーを作ろうと思っています。(JavaScriptのリンクも読み取る仕様で)

最低でも100サイト✕1000ページくらいを巡回する事ができるようなものを作ろうと思うのですが、どのような言語?を学習すればよいでしょうか?

ネットで色々調べたところ、
VPS(さくらVPSが良さそう?)を契約して
python、Seleniumを覚えれば
なんとかなるのかな???って感じがしているのですが、まったくもって確証がもてません。

当方、HTML、CSS、PHP、Javascriptくらいしか分からず、サーバ周りも詳しくありません。

上記用途のような場合、どのような学習方法が最適でしょうか。
どの言語が良い。どのページが参考になる。どの本が良い等、何でも良いので情報を教えていただければ幸いです。
よろしくお願いいたしますm(_ _)m

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

言語でいうとRubyが良いかなと思います。
Ruby以外の言語のクローラー製作の経験がないため他言語との比較はできませんが、Rubyには問題なく使えるフレームワークが充分揃っているので、最終的に必要なクローラーが完成する道筋があると思います。
参考資料としてはRubyによるクローラー開発技法っていう赤い本が勉強になりました。まだ載っている情報はそれほど古くないと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/19 02:57

    貴重な情報ありがとうございます!

    amazonでタダ読みできるところまでその本を読んでみました。

    またその後、本の作者様のサイトを見ていたのですが、

    nokogiri(Ruby)  > BeautifulSoup(Python)
    Scrapy(Python) > anemone(Ruby)

    との事でした。
    なので、フレームワークで作るならPython。ライブラリから作るならRubyなのかなぁと考えました。

    この本の内容が、クローラーを勉強するのにかなり良さそうなので、Rubyを使いたいところですが、
    Rubyは2012年に開発が止まっているanemoneしかフレームワークがない(?)ところがネックとなりそうですね。

    RubyかPython、どちらにするか、というところまで絞れました!
    ありがとうございますm(_ _)m

    キャンセル

  • 2017/04/19 14:05 編集

    Rubyならanemoneの他にcapybaraがありますよ。(クローラーのフレームワーク?ではないかもしれませんが。)

    キャンセル

  • 2017/04/20 17:46

    capybara、フレームワークではないようですが、JS実行には良さそうな感じしますね♪
    ありがとうございます☆

    キャンセル

0

私は簡単なイラスト収集クローラしか作ったことがありません。
恐らくPythonだけだとJavaScriptが扱えないという理由で
Seleniumが必要なことになっているのだと私は思います。

言語はお好きなもので良いと思います。

サイト毎に専用のクローラを作ることになると思います。

Rubyならcapybara&PhantomJS
C#ならHtmlAgilityPack&ScrapySharpなどが考えられます。

参考
Rubyでスクレイピングしてみました。
C#のScrapySharpでスクレイピングする

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/17 12:16

    「サイト毎に専用のクローラを作ることになる」のはなぜでしょうか?
    ソースを取得するのに、サイトごとで処理が違うということもないと思うのですが・・・

    キャンセル

  • 2017/04/17 22:23 編集

    まず私がクローラ初心者だということを覚えておいてください。
    (ついでにHTMLもJavaScriptも分かりません。)
    私の言っていることを信じてはいけません。

    今思えば、Rubyのmechanizeを使って
    linksでリンクを抜き出してeachで回すという
    クローラを作れば、サイト毎にクローラを用意する
    必要が無いかもしれません。

    質問に答えた当時の私は、サイトによって
    ソースコードが異なっているので
    (サイトの他のページの)urlの抜き出しや
    (JavaScriptを動かす)クリックの再現などで
    サイト毎にクローラに変更を加えないといけない
    のではと考えていました。

    キャンセル

  • 2017/04/19 02:48

    なるほど。「サイト毎に専用のクローラを作ることになる」となると、この試み自体無理かなぁと思ったので、不安になってちゃいました(^^A
    ご丁寧にありがとうございます。

    キャンセル

同じタグがついた質問を見る

  • スクレイピング

    465questions

    スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。