#スクレイピングとは
他のウェブサイト上からある特定のデータを抜き出す処理です。
###使うための準備
####●Railsで、Gemをインストールする場合
gem 'mechanize'
$ bundle install
これで、gemのインストールが完了しました。
####●rubyファイルでクラスを使う場合
.rbファイルの一番上に追記すると使えるようになります。
require 'mechanize'
###Mechanizeクラスのインスタンスを生成する
スクレイピングを使うには、まず「Mechanizeクラスのインスタンス」を生成します。
インスタンスを生成するにはnewメソッドを使うでした。
任意の変数 = Mechanize.new
これでインスタンスが生成できました。
###WEBサイトのHTMLを取得する(get)
先程、生成したインスタンスに取得したいWEBサイトの情報を抜き出すためにgetメソッドを使います。引数にURLを渡しましょう。
require 'mechanize'
任意の変数 = Mechanize.new
任意の変数2 = 任意の変数.get("取得したいWEBサイトのURL")
###指定したHTML要素の内容を検索する
今回は、spanタグを内容を取得します。h1やpなどいろいろ試してみると理解が深まります。
require 'mechanize'
任意の変数 = Mechanize.new
任意の変数2 = 任意の変数.get("取得したいWEBサイトのURL")
任意の変数3 = 任意の変数2.search('span')
puts 任意の変数3
さいごに任意の変数3を呼び出すと取得したいURLのspanタグの要素が全て取得できているのがわかります。
要素の中の要素を指定した場合は下記のように書きます。h1の中のspanという意味になりますね。
任意の変数3 = 任意の変数2.search('h1 span')
####要素からテキストのみを抜き出す(inner_text)
では、前回取り出したspan要素からテキストのみを取得してみましょう。
今回は、eachメソッドを使ってspan要素のテキストを全て表示させます。
require 'mechanize'
任意の変数 = Mechanize.new
任意の変数2 = 任意の変数.get("取得したいWEBサイトのURL")
任意の変数3 = 任意の変数2.search('span')
任意の変数3.each do |変数3|
puts 変数3.inner_text
end
では、ターミナルで出力してみましょう。
$ ruby 〇〇.rb
これで、指定したURLのspan要素のテキストが全て表示されました。
####属性の値を抜き出す(get_attribute)
今回は、a要素のからhrefの値を取得して呼び出します。
require 'mechanize'
任意の変数 = Mechanize.new
任意の変数2 = 任意の変数.get("取得したいWEBサイトのURL")
任意の変数3 = 任意の変数2.search('a')
任意の変数3.each do |変数3|
puts 任意の変数3.get_attribute('href')
end