【Ruby】4行でスクレイピングする方法

→約 2 分で読めるよ〜

4行書くだけで、スクレイピングできます。

nokogiri(gem)を使います。

ざっくり言うと、

「先輩が作ったコードの塊を使って、サイトの情報取ってきちゃうぞ☆」です。

環境

・AWS Cloud9

はじめての方は始める前にアラーム設定も忘れずに。

ソースコード

コード自体は4行です。

先輩方、ありがとうございます。

まるごと取得(目安:5分)

アプリを作成

「scraping_sample」部分はアプリ名です。

のちほどパス指定してインストールしたいので、

skip-bundleにしたほうが吉。

アプリへ移動

さきほど作ったアプリへ移動します。

Gemfile追加

「Gemfile」ファイルに以下を追加します。

「gemってなんだ?」って方は

Gemとは?RubyのGemを使ってみる!の記事が分かりやすいですよ。

インストール

パス指定したほうがいいですね。

ファイルを作成

「scrape.rb」というファイルを作成します。

以下の内容をコピペします。

例として、このブログのトップページをスクレイピングします。

試すときは、

url = “〇〇” の中を対象のURLへ書き換えてくださいね。

実行

結果

ずらずら。

<div class=”container sectionBox copySection text-center”>
<p>Copyright © じゅもん をおぼえた! All Rights Reserved.</p>
<p>Powered by <a href=”https://wordpress.org/”>WordPress</a> with <a href=”https://lightning.nagoya/ja/” target=”_blank” title=”Free WordPress Theme Lightning”> Lightning Theme</a> &amp; <a href=”https://ex-unit.nagoya/ja/” target=”_blank”>VK All in One Expansion Unit</a> by <a href=”//www.vektor-inc.co.jp” target=”_blank”>Vektor,Inc.</a> technology.</p> </div>

絞り込んで取得(目安:10分)

全部は長すぎww

最新3記事のタイトルに絞り込みます。

ファイル修正

「scrape.rb」ファイルを修正します。

え?どうやって絞り込むの?

対象のサイトで開発者ツールを使います。

今回はこの部分(最新3記事のタイトル)を抽出します。

<h1 class=”media-heading entry-title”><a href=”https://air1p1.com/2019/04/20/vba-struggle/”>ExcelVBAで棒人間を動かすには?(ジタバタ編)</a></h1>

「<h1 class=”media-heading entry-title”>にある

<a>タグのインナーテキスト取りたい。」ということですね。

「どういうこっちゃ?!」と思った場合は、

以下をご覧ください。

30分間HTML入門 — ごく簡単なHTMLの説明 – The Web KANZAKI

なので、こうすれば絞り込めますね。

実行

結果

取れました。

 

cloud9user:~/environment/scraping_sample $ ruby scrape.rb
“ExcelVBAで棒人間を動かすには?(ジタバタ編)”
“プログラミング勉強方法は?(アンケート結果あり)”
“「UWSC」でEXCELマクロを実行するには

参照

【Rails初学者向け】NokogiriをつかってほかのWebサイトから情報を取得しよう

Ruby + Nokogiriでスクレイピング

はじめてのRuby!Nokogiriでスクレイピングの基礎を理解しよう!

まとめ

4行書くだけで、スクレイピングできちゃいました。

活用方法たくさん浮かびますね。

Twitterで定期的に新規記事をつぶやく、とかね。

また、UWSCでもスクレイピングできるよ。

※利用する際は、

【webスクレイピングと著作権】どこから違法?法律的観点から注意すべき点!などを

お読みになってくださいね。

ここでしか読めない!Pythonエンジニア村上さんへの質問

TwitterやQiitaで話題のエンジニア!
村上さんがエンジニアを目指したきっかけは、「2ch」?!
熱い気持ちが文字からも伝わってくるよ。
Twitterも要チェック☆

50名以上のお話が読めるのは、このブログだけ!