読者です 読者をやめる 読者になる 読者になる

サラリーマン休日副業で月10万円以上目指すページ

普通のサラリーマンが副業で月10万円以上稼ぐ方法を一挙公開

最強の情報収集術!初心者向けRuby+NokogiriでWebスクレイピング徹底解説

f:id:linuxdiary:20140126015927j:plain

 

 

はじめに

 

情報氾濫の時代、インターネット上には数えきれないほどの情報で溢れています。効率よく情報収集を行うことができたら・・・そんなあなたにオススメしたいのはWebスクレイピング

 

プログラミングを使って自動でWeb情報をクローリングし、加工した上で必要な情報を効率よく収集します。 プログラミングと聞いて顔が曇った方も多いかも知れませんが、現在はプログラミングの敷居もかなり下がっています。

 

Rubyは日本語製のスクリプト言語。和製ゆえにドキュメントも豊富です。今回はWindowsな方向けにRubyの導入から実際にサンプルプログラムを動かしてみる所まで詳説したいと思います。

 



 

Rubyのインストール

 

Ruby InstallerのHPから「Ruby 2.0.0-p***」をダウンロードします。

RubyInstaller - Homepage

 

インストーラーを実行してください。

 

f:id:linuxdiary:20140126025136j:plain

日本語を選択。

 

f:id:linuxdiary:20140126025215j:plain

同意するを選択。

 

f:id:linuxdiary:20140126025232j:plain

インストールをクリック。

 

f:id:linuxdiary:20140126025300j:plain

セットアップが完了します。

 

コマンドプロンプトからプログラムを直接実行できるようにPATHを通します。

 

f:id:linuxdiary:20140126025406j:plain

システムのプロパティの詳細設定タブから環境変数をクリック。

 

f:id:linuxdiary:20140501225715j:plain

システム環境変数のPathを選択し、編集をクリック。

 

f:id:linuxdiary:20140126025522j:plain

セミコロン(;)の後に C:\Ruby200\bin と入力。

 

スタートメニューのアクセサリからコマンドプロンプトを起動して下さい。

 

f:id:linuxdiary:20140126025724j:plain

ruby -v と入力し、バージョンが表示されればインストールは正常に行われています。

 

 

Nokogiriのインストール

 

NokogiriはWebページを解析するライブラリです。 

 

コマンドプロンプトから gem install nokogiri と入力し実行するだけでインストールが始まります。

 

 

はてブホットエントリをスクレイピングしてみる

 

はてブのホットエントリをゴッソリ記録するプログラムを作成してみます。

 

f:id:linuxdiary:20140126031806j:plain

Cドライブ直下に program というフォルダを作成してください。

 

f:id:linuxdiary:20140126032043j:plain

コマンドプロンプトを起動し、cd C:\program と入力し移動してください。

 

下記のサンプルコードを C:\program 内に hatena.rb という名前で保存し、コマンドプロンプトから ruby hatena.rb と入力し実行してください。

 

require 'nokogiri'
require 'open-uri'

doc=Nokogiri::HTML(open("http://b.hatena.ne.jp/hotentry"))

data=doc.css("div.entry-contents")
data2=doc.css("ul.users")

entries=Array.new

48.times {|i|
 if data[i].nil? or data2[i].nil? then
  break
 end

 title=data[i].css("a.entry-link").inner_html
 url=data[i].css("a.entry-link")[0]["href"]
 usr=data2[i].css("span").inner_html
 post=data[i].css("li.date").inner_html
 entries<<[title,url,usr,post]
}

File.open('C:\program\hatena.txt',"w") do |file|
 entries.each do |entry|
  file.write("#{entry[0]}(#{entry[2]}):#{entry[1]}\r\n")
 end
end

 

f:id:linuxdiary:20140126031956j:plain

 

f:id:linuxdiary:20140126032823j:plain

 

はてブのホットエントリーが記録された hatena.txt が生成されればうまく動作しています。

 

Webページの解析はHTMLタグベースで行われます。

 

例えば、<div class="****">内容</div> というタグに囲まれる情報を抽出したい場合、Nokogiriオブジェクト.css("div.****") と記述します。

 

ここでは<div class="entry-contents"></div>で囲まれるはてブの各ホットエントリの情報を抽出するために、data=doc.css("div.entry-contents") でdata配列に格納しました。取り出したエントリ群を1個ずつ C:\program\hatena.txt のファイルに書き出していきます。

 

 

まとめ 

 

今回はWebスクレイピングの入門として開発環境の構築とサンプルコード実行までを解説しました。Windowsタスクスケジューラと連携して定期的に情報を収集したり、Railsと連携してデータベースを構築したり、使いこなしてくると色々な応用が考えられます。今後もさらに色々なテクニックを紹介していきたいと思います。

 

 

参考情報

 


Spidering hacks―ウェブ情報ラクラク取得テクニック101選

Spidering hacks―ウェブ情報ラクラク取得テクニック101選

 

 


Web解析Hacks ―オンラインビジネスで最大の効果をあげるテクニック & ツール

Web解析Hacks ―オンラインビジネスで最大の効果をあげるテクニック & ツール

  • 作者: Eric T. Peterson,株式会社デジタルフォレスト,木下哲也,有限会社福龍興業
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2006/11/08
  • メディア: 単行本(ソフトカバー)
  • 購入: 3人 クリック: 78回
  • この商品を含むブログ (21件) を見る