WEB スクレーピングとその応用

作成日: 2012-11-11
最終更新日:

WEB スクレーピング

WEB スクレーピング(WEB スクレイピング, Web scraping )とは、 WEB 画面に表示される情報を何らかのプログラムを使って評価して必要な情報を得ることである。 誤解のない範囲内で、単にスクレーピング(スクレイピング)と呼ばれることもある。 ここでは、google 検索で指定したキーワードを含むページが何件あるか、 概算を拾って表示するプログラムを開発する。

もともとは、自分の興味で「発音について」を作り始めたとき、 二つの読み方を比較するのに都合がいいプログラムが見当たらず、自分で作らないといけないことから始まった。

コマンド編

第1章:欧文決め打ちで表示する

キーワードを決め打ちして、そのキーワードが含まれるページ数を表示する。 ここでのキーワードは esperanto である。 ページ数は、「約***件」から抜き取っている。 つたないプログラムだが、気分を理解してもらいたい。


# scraping.rb 
require 'open-uri'

url = 'http://www.google.co.jp/search?ie=UTF-8&oe=UTF-8&q=esperanto'
page = open(url)
text = page.read
print text.scan(/約 .* 件/) 

コマンド
ruby -Ku scraping.rb

実行結果
["約 32,400,000 件"]

第2章:日本語決め打ちで表示する

こんどは、検索の単語を日本語まで拡大する。

今回は単語は「二重焼き」である(広島では今川焼きのことをこのようにいう)。 前回と同じように、
url = 'http://www.google.co.jp/search?ie=UTF-8&oe=UTF-8&q=二重焼'
としてみると、これでは当然エラーが出る。URI::InvalidURIError 例外というエラーだ。 このエラーを除くには、日本語のエンコーディングをしなければならない。 エンコードのついでに、少しコードを修正した。


require 'open-uri'
require 'cgi'

keywords = ['今川焼き', '二重焼き']

keywords.each { |a_keyword|
	url = 'http://www.google.co.jp/search?ie=UTF-8&oe=UTF-8&q=' + CGI.escape('"'+a_keyword+'"')
	text = open(url).read
}

text.scan(/約 ([\d\,]+?) 件/)
print a_keyword + " 約" + $1 + "件\n"

実行結果は次の通りである。

今川焼き 約 1,240,000 件
二重焼き 約 28,800 件

WEB CGI 編

追って書く予定である(2014-11-30)。

まりんきょ学問所Rubyの浮き輪 > WEB スクレーピングとその応用


MARUYAMA Satosi