SlideShare a Scribd company logo
実践Excelスクレイピング 
しおばらひろあき@ハイロウテック 
第3回Webスクレイピング勉強会@東京(2014/10/26)
自己紹介 
• しおばらひろあき 
• 合同会社ハイロウテック代表社員 
• http://www.hilotech.jp/ 
• Webの下から上まで全般が守備範囲 
• 次のドール販売は11/24(祝)「アイドール」です
よい子のみんな! 
みなさん! 
スクレイピングしてますか?
なに使ってます? 
言語は? 
Pythonかな? 
Javaかな? 
Nodeかな?
最近めっきり聞かないよね 
ぼくはPerlちゃん! 
すっかり絶滅危惧種
Perlでスクレイピング… 
•ぶっちゃけめんどい! 
•ライブラリはそろってるけど、 
ギークが多すぎて 
「ソース嫁状態」 
になりつつある 
•Encodeが出てきて??になった 
•これをメンテナの人に聞かれると 
殴られる 
•Perl 6いつ出んだよ!
でもPerlでスクレイピングする 
• 渋谷区年別住民登録人口 
http://www.city.shibuya.tokyo.jp/data/statics/base/nenbetu 
.html 
• これをCSVとしてスマートに取得したい!
ソース 
#!/usr/bin/env perl 
use strict; 
use Encode::Locale; 
binmode STDOUT => ':encoding(console_out)'; 
use Web::Query; 
use HTML::Entities; 
$|=1; 
wq( 'http://www.city.shibuya.tokyo.jp/data/statics/base/nenbetu.html‘ ) 
->find('table')->first 
->find('tr')->each(sub{ 
my( $i, $e ) = @_; 
$e->find('th,td') 
->each(sub{ 
my( $l, $e ) = @_; 
print ',' if ( $l != 0 ); 
print '"' . decode_entities( $e->html ) . '"'; 
}) 
; 
print "¥n"; 
}) 
;
Perl 20年書いてるけどめんどくさくなってきた… 
#!/usr/bin/env perl 
use strict; 
use Encode::Locale; 
binmode STDOUT => ':encoding(console_out)'; 
use Web::Query; 
use HTML::Entities; 
$|=1; 
wq( 'http://www.city.shibuya.tokyo.jp/data/statics/base/nenbetu.html‘ ) 
->find('table')->first 
->find('tr')->each(sub{ 
my( $i, $e ) = @_; 
$e->find('th,td') 
->each(sub{ 
my( $l, $e ) = @_; 
print ',' if ( $l != 0 ); 
print '"' . decode_entities( $e->html ) . '"'; 
}) 
; 
print "¥n"; 
}) 
; 
文字コードを端末に合わせるおまじない 
いつの間にか登場しているライブラリ 
なぜかエンティティ化される日本語を処理…
そこで提案! 
スクレイピングは 
Excelでやる時代!
Excelとは? 
• 人類が生んだ万能ツール 
• 用途 
• 営業日報作成 
• 方眼紙制作 
• Excelスクショエビデンス作成 
• ソフトウェアプロトタイピング 
• などなど
Excelでスクレイピングしてみよう! 
• 渋谷区年別住民登録人口 
http://www.city.shibuya.tokyo.jp/data/statics/base/nenbetu 
.html 
• これをCSVに!
手順1:ブラウザでアクセス
手順2:スクレイピング対象を選択! & CTRL+C
手順3:ExcelにCTRL+Vで貼り付け!
手順4:CSV形式で名前をつけて保存! 
たったこれだけ!!
あ、怒らないで… 
実はExcelには 
もっとすごい技が!
Webクエリ
Webクエリ 
なんだこれ?
Webクエリ 
クリックするとこんな画面に
Webクエリ 
スクレイプしたいURLを入れる
Webクエリ 
データを選択して「取り込み」
Webクエリ 
Excelに取り込まれる!→作業完了
Webクエリ 
定期自動更新も可能!
ガーン… 
わいのPerl人生はなんやったんや…
実は 
高度なビジュアライズもできる!
例)東京23区の人口をWebクエリで取得 
http://www.metro.tokyo.jp/PROFILE/map_to.htm
取得したデータをPowerView/PowerMapに投射
こんなビジュアライズがさくっとできる
ガーン… 
わいの 
JavaScriptビジュアライズ 
人生はなんやったんや…
それほど非現実的な解ではない 
• どこの会社の誰のPCでも環境がそ 
ろっている 
• それほど習熟が要らない 
• VBAやPowerShellを利用すれば 
自動化できる
教訓 
• 意外にスクリプト言語にこだわらな 
くてもいいかも 
• 引継ぎ後の担当者がPerlできな 
かったら? 
• 道具は適材適所で使いましょう
ご清聴感謝します

More Related Content

実践Excelスクレイピング