3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【rails】スクレイピングの実装方法

Last updated at Posted at 2020-09-28

スクレイピングの実装の方法を学習しましたので、学習のアウトプットとして書かせていただきます。

この記事を読むと、スクレイピングとは何か?
その実装方法はどうすればいいのか?を理解できます。

スクレイピングとは?
ウェブサイトから情報を習得し、加工して新たな情報を生成すること。
例えば、様々な飲食店のサイトを巡回し、価格表を作成するなど。

より詳しい内容を知りたい!と思われた方は、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メソッドを使って欲しい情報を習得する

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?