スクレイピングの実装の方法を学習しましたので、学習のアウトプットとして書かせていただきます。
この記事を読むと、スクレイピングとは何か?
その実装方法はどうすればいいのか?を理解できます。
スクレイピングとは?
ウェブサイトから情報を習得し、加工して新たな情報を生成すること。
例えば、様々な飲食店のサイトを巡回し、価格表を作成するなど。
より詳しい内容を知りたい!と思われた方は、Googleで検索してみてください。
では早速スクレイピングの実装方法を書いていきます。
#スクレイピングの実装方法
1 gemfile 「mechanize」をインストールする
gem 'mechanize'
その後にターミナルでbundle installを打ち込む
2 Mechanizeクラスのインスタンスを生成
agent = Mechanize.new # Mechanizeクラスのインスタンスを生成し、変数agentに代入
3 ウェブサイトのHTML情報を取得
Mechanizeクラスのインスタンスメソッド「get」を利用し、スクレイピングしたいWEBサイトのHTMLを取得する
page = agent.get("https://www.google.com/?hl=ja")
4 searchメソッドを使い、HTML要素を検索する
searchメソッドは、getメソッドで取得したページの情報が入ったオブジェクトに対して使います。これによって取得したウェブサイトのHTML情報の中から指定したHTML要素の内容を検索できる。
該当するHTMLのタグ要素が1つでも、返り値は配列の形式で返ってくる。
agent = Mechanize.new
page = agent.get("https://www.google.com/?hl=ja")
elements = page.search('h1')
↑https://www.google.com/?hl=jaの中にある、h1要素の情報を取得している。
5 inner_textメソッド
searchメソッドで得られたHTML情報のテキストを取得したい場合、inner_textメソッドを使う
agent = Mechanize.new
page = agent.get("スクレイピングしたいウェブサイトのURL")
elements = page.search('h2 a') # h2要素の下のa要素を検索
elements.each do |ele|
puts ele.inner_text
end
6 get_attributeメソッド
HTMLの属性の値を取得したい場合、get_attributeメソッドを使う。
例えば、aタグ要素のHTMLはリンク先のURLを値とする属性「href」を持っている。
get_attribute(属性)を書くことで引数で指定した属性の値を取得できる。
agent = Mechanize.new
page = agent.get("スクレイピングしたいウェブサイトのURL")
elements = page.search('h2 a') # h2要素の下のa要素を検索
elements.each do |ele|
puts ele.get_attribute('href') # puts ele[:href]としても良い
end
#スクレイピングのまとめ
● Mechanizeクラスのインスタンスを生成する
● Mechanizeクラスのインスタンスメソッド.get(情報を取得したいウェブサイトのURL)でウェブサイトのHTML情報を取得
● 欲しいデータのあるタグ要素をsearchメソッドで指定して習得
● 取得したタグ要素のHTML情報に対してinner_textやget_attributeメソッドを使って欲しい情報を習得する