コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

のこぎっていきましょう

のこぎっていきましょう

意味のわからない動詞をタイトルにしているので誰が読むのかわかりませんが、きっと物好きな方が読むんだと思います。
のこぎるとはですね。のこぎるとはノコギリでこうね…。こうしてね…。いまはやりのDIYとかじゃなくて…。なんていうかこう…。ノコギリでですね…。


はい、いつも以上に煮え切らない感じなので本題に入りたく思います。
本日はウェブスクレイピングというのを突然やってみたくなったので、やってみようと思った次第です。

ウェブスクレイピング
ウェブスクレイピングとは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。 通常このようなソフトウェアプログラムは低レベルのHTTPを実装することで、もしくはウェブブラウザを埋め込むことによって、WWWのコンテンツを取得する。

ざっくり説明しますと、Web上のHTMLの一部のデータを抽出してしまおうみたいなことです。

スクレイピングに使えるRubyライブラリがあるとのことでNokogiriを使用していきます。
公式はこちら
Tutorials - Nokogiri 鋸
そう、のこぎるのノコギリってこのことだったんですね。

実際にいじっていきます

今回はRubyライブラリを使用するのRubyいじっていきます。そういえばRuby触るの久しぶりだ。

とりあえず「Nokogiri」を導入します。
gem install nokogiri
コマンドで導入するようになると、自分が以前にどんなライブラリを導入したかどうか忘れてしまいがちになるのは僕だけなのだろうか。まあそこは、gemがなんとかしてくれるのでそこは気にしなくてもいいんだけどね。


導入したけどどう使っていこうか考えてなかったので、どうしましょうかね。「HTMLデータを取り出すことができるぞ!」やってみようみたいな軽いノリで動かそうとしたら駄目ですね。

とりあえずまずは「Nokogiri」が使えるか試してみます。

# nokogiriの呼出
require 'nokogiri'

# 確認用サンプルHTML 「html」
html = <<"EOS"
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>Test</title>
</head>
<body>
<h1>Hello Nokogiri</h1>
</body>
</html>
EOS

# 「html」をパース(解析)する
doc = Nokogiri::HTML.parse(html)

# 出力を並べる
p doc.title
p doc.css('h1').text

出力として

"Test"
"Hello Nokogiri"

が出てくれば、予想通りの挙動です。
やったー!できたー!なにこれーすごーい!


というわけでNokogiriの動作が確認できたので次回はWebから引っ張ってきます。
本当はそのまま続けて書きたかったのだけど'open-uri'の方で文字コードが原因っぽいエラーがどうしてもでて、こちらを解決できなかったので次回に持ち越しです。