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

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

ただいまの
回答率

90.53%

  • Ruby

    9214questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    2985questions

スクレイピングを学ぶ方法

解決済

回答 4

投稿

  • 評価
  • クリップ 2
  • VIEW 184

KOO_

score 6

現在、Rubyでスクレイピングを学びたいと考えております。

インターネットサイトで検索するといくつかスクレイピングに関する記事が出てくるようですが、どれも1から学んだり、応用展開する事じゃ難しそうに感じます。

スクレイピングを勉強した事のある方、何か良いサイト例等はございますでしょうか?

よろしくお願い致します。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

+5

スクレイピングを学ぶ前に法律的な制限を学ぶことをオススメします。

入り口は以下で良いかと。
【スクレイピングと法律】スクレイピングって法律的に何がOKで何がOUTなのかを弁護士が解説。

スクレイピング入門サイトで明らかな利用規約違反のサンプルを提示している場合もあり、個人的には非常に問題だと思っています。
サイト管理者から見た場合、スクレイピング初心者(問題を起こす可能性の高い人)のアクセスを探し出すのは思っている以上に簡単です。
あまり話題になったことが無いですが、サイト管理者からプロバイダ経由で簡単に警告を行うことが出来ます。警告無視によるプロバイダ契約の解除まではそれほど難しいものではありません。

正しい法律知識とアクセスマナーがクローリングの最低限の下地になるので、スクレイピング以前の問題として、キチンと学んでください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

checkベストアンサー

+1

おすすめの書籍
・Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例
静的・動的なサイトをRubyでクロールする方法について学ぶことができる。
Rubyの構文について知っている必要がある。

・クローリングハック あらゆるWebサイトをクロールするための実践テクニック
Javaによるクローラーを例に、クローラーを作る際に必要になる知識について広く学べる。
Rubyでクローラーを作る際の情報も少し載っているが若干古め。

・Puppeteer入門 スクレイピング+Web操作自動処理プログラミング 
JavaScriptによるクローラーの作成について、開発環境の構築から学べる。
拝読中。

おすすめのサイト
クローラ作成に必須!XPATHの記法まとめ
上の書籍だけではXPathの情報が足りないので。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

個人的なオススメは以下となります。
導入から、各種コマンドについてまで わかりやすく記載されている為、
実装時にお世話になりました。ご参考までに
http://www.seleniumqref.com/

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

スクレイピングで何をしたいかによって、学ぶ内容も変わると思います。

私は仕事と趣味でいくつかのサイトをスクレイピングしていますが、その手法は年々変化しています。初期の頃は「とりあえず要件を満たせればなんでもいい」と思って自己流でやっていましたが、その後、「いくらなんでもDOMの分析くらいしないとな」という形でXPathなども使うようになりました。

私の作ったツールの一つに、「クレジットカード情報漏洩を素早く検知する」という目的のものがあります。これですと、以下のような要件で作ることができます。

  1. 情報源の見出しのページをHTTPでダウンロードする
  2. ダウンロードした中身に「流出」や「漏洩」などのキーワードがないか探す
  3. 新しい記事が見つかったことをメールなどで通知する

この中で、1はRubyでもPythonでも、いくらでも記事が見つかるでしょう。2は、ちゃんとやろうと思うと難易度が高いですが、探すだけであればいきなりの正規表現でもいいでしょう。3はメール送信ができればよいので、これも解説には困らないでしょう。

…といかにも簡単そうに書きましたが、実は難しいのは、「それが新しい記事なのか」という判定です。そうでないと、スクレイピングの度毎に同じ記事の通知が飛んでくることになりウザいです。そのためには、ファイルなりデータベースに、履歴を覚えておかなければなりません。その辺は、まぁ要件次第ですね。

先達の知恵に学ぶことはもちろん大切ですが、スクレイピングくらいであれば脆弱性が原因で外部から侵入されたりもしないでしょうから、「作りたいもの」を決めてチャレンジされてみてはどうでしょうか。そうでないと、学習の動機づけという点でも難しいと思います。そうして壁にぶつかれば、あらためてteratailでも質問してもよいし、その「知りたいこと」に適した書籍を教えてもらえば、勉強も捗るでしょう。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • Ruby

    9214questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    2985questions