Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

実践Excelスクレイピング

16,840 views

Published on

ExcelでスクレイピングとBIごっこをする方法

Published in: Internet
  • Be the first to comment

実践Excelスクレイピング

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

×