かっちゃんの日記

初めまして!自営業(タイヤの卸売)をやってます。新規事業としてアプリ開発に興味がありプログラミングを勉強中です。日々の学びを発信していきます。よろしくお願いします。HTML/CSS/haml/sass/Ruby/Ruby on rails/Javascript/Jquery/Git/GitHub/データベースとSQL/統合テスト/AWS

スクレイピング(inner_textメソッド)

復習がてらアウトプットしてみます^^

 

スクレイピングとは、ウェブサイト上のHTMLからある特定のデータを抜き出す処理のことで、外部のサーバーからデータを抽出し、集計をしたりするときに役立つそうです。

 

Mecanizeというスクレイピングを行うためのgemが必要になります。

 

手順

  • Mechanizeクラスのインスタンスを生成する
  • Mechanizeクラスのインスタンスメソッドget(情報を取得したいウェブサイトのURL)で、ウェブサイトのHTML情報を取得する
  • 欲しいデータのあるタグ要素をsearchメソッドで指定して取得する
  • 取得したタグ要素のHTML情報にたいしてinner_textメソッド、またはget_attributeメソッドを使って欲しい値を取得する

 

実際にinner_textメソッドでamazonnからaタグを抜き出してみます。

サイトのHTMLは、option+command+Uで確認できます。

下記のファイルはsample.rbで、ターミナルから$ruby sample.rbでファイルを実行します。

amazonのトップページのaタグをスクレイピングしてみます、、

f:id:chkc:20190724112656p:plain

sample.rb

このようにaタグだけ引っ張れました。

 

f:id:chkc:20190724112927p:plain

 

次にもうちょい細かいスクレイピングをしたいと思います。

例えばあいみょんを検索した時のこのページ

f:id:chkc:20190724115534j:plain

アルバムのタイトルだけ抜いてみます。

検証かけるとこんな感じで出てきます。「真夏の夜の匂いがする」はaタグの中のspan

タグです。

 

f:id:chkc:20190724115638p:plain

 

f:id:chkc:20190724115947p:plain

こんな感じで抜けました

f:id:chkc:20190724120144p:plain

 

もうちょっと綺麗に取得したいので、別サイトで試してみます。笑

rockinonのサイトでやってみます。

f:id:chkc:20190724122233p:plain

検証するとc-article-middleクラスのdivタグですね

 

f:id:chkc:20190724122349p:plain

 

cssを当てる時と同じように .c-article-middleと書き、divタグでsearchメソッドの指定の追加を行います。

f:id:chkc:20190724122619p:plain

 

こんな感じで抜けました

 

f:id:chkc:20190724122938p:plain

 

さっきより綺麗に取得できました。

次の投稿でget_attributeメソッドに関してアウトプットします.