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.

オープンデータのためのスクレイピング

18,214 views

Published on

Published in: Technology
  • Be the first to comment

オープンデータのためのスクレイピング

  1. 1. オープンデータのためのスクレイピング 〜抽出・共有・分析まで〜 2014.06.22 第1回 Webスクレイピング勉強会@東京 OpenDataInstitute CC BY-NC-SA 2.0 @ito_nao
  2. 2. Webスクレイピングが出来る “プログラミング不要”の Webサービス・フリーツール 今回… のみをご紹介。 PhOtOnQuAnTiQuE CC BY-NC-ND 2.0
  3. 3. Beautiful Soup PyQuery 一つの言語で抽出・加工・分析・可視化まで 出来るんだけど…。 Hpricot 各言語にあるパーサやライブラリを使えば、 etc. nolnet CC BY-NC 2.0
  4. 4. Webサービスやフリーツールを “使うべき”なのはどんな人? Alex Medvick CC BY-ND 2.0 • プログラマーでない場合、言語を一から勉強しなければな けない • 手っ取り早くデータを抽出して、分析や可視化などのデー タ活用に時間をかけたい メリット スクレイピング機能だけでなく、APIやライブラリなどで 取得データの利用面も考えられている デメリット ・無料で出来ることは限られている ・サービスや開発がいつ終了するかわからない
  5. 5. 何よりも・・・ スクレイピングの敷居を下げることで、 日本のオープンデータが少しでも進展す るのでは。 Matt CC BY-NC-SA 2.0
  6. 6. 各国(政府ポータル)比較 12,914 306 1,136 3664 164 24,528 5,013 4,122 30,382 3,193 4,512 5,453 2,122 584 1 右図の星にカウントできる拡張子のみ対象(2014.06.18時点) HTML等 星0
  7. 7. more Andrechinn CC BY 2.0
  8. 8. 政府による、プロダクト やサービスに関する データの公開 民間による、プロダクト やサービスに関する データの公開 政府による、個々人への パーソナルデータの公開 民間による、個々人への パーソナルデータの公開 消費者がより良い選択ができるようになるために必要なデータの公開。 Smart Disclosure と 4分類 Smart Disclosure and Consumer Decision Making: Report of the Task Force on Smart Disclosure
  9. 9. Open Data MyData 米国ではオープンデータとMyDataに分け、 推進のために様々な施策が打たれている。
  10. 10. McKinseyによるレポート http://www.mckinsey.com/insights/business_technolog y/open_data_unlocking_innovation_and_performance_ with_liquid_information オープンデータにより、毎年3.2兆ドルの経済的価値を生み出す。
  11. 11. McKinseyによるデータ種別
  12. 12. 7つのドメインと経済効果
  13. 13. McKinseyのレポートを踏襲した7つのドメイン G20におけるオープンデータの経済効果は5年間で13兆ドル http://www.omidyar.com/sites/default/files/file_archive/insights/ON%20Report_061114_FNL.pdf
  14. 14. オープンガバメントデータ × 民間企業オープンデータ × MyData(パーソナルデータ) によって、 こんな世界が実現したら 素敵じゃないですか?
  15. 15. 食品の栄養成分データ 日本人の食事摂取基準 メニューレシピや製品の 栄養成分データ カルテ、レセプトデータ 活動量計・体組成計など のデータ 食品×ヘルスケアデータでの例。 日々の健康管理をスマートに、高精度に。
  16. 16. 2013.08.29 G-8 International Conference on Open Data for Agriculture 2013.08.31 Global Open Data for Agriculture and Nutrition initiative 2013.09.23 Product Open Data
  17. 17. Pfizer Blue Button Project 2013年12月に、ファイザーがBlue Button Connectを 使って、臨床試験に参加した個人が試験データを全てダ ウンロードできるようにすると発表。2014年1月開始。 高齢者および障害者向け公的医療保険制度受給者や退役軍人が各々の医療記録をダ ウンロードできるサービス。 http://www4.va.gov/bluebutton/ Blue Button 2014.05.31 – 06.03 米国政府CTOがopenFDAを発表 https://open.fda.gov/ 最初のフェーズでは、薬物の副作用や薬剤過誤についてのデータをAPIで公開。 今夏には、医薬品ラベルデータやリコールデータを公開する予定。
  18. 18. 食品の栄養成分データは公開されている?
  19. 19. プレミアム会員の機能の一つ。 「カロリー塩分をクリックして表示」 レシピ材料欄の食材や分量と、文部科学省「日本食品標 準成分表2010」などから自動計算。
  20. 20. 全て P・D・F!! 出展:文部科学省ウェブサイトを加工 http://www.mext.go.jp/b_menu/shingi/gijyutu/gijyutu3/houkoku/1298713.htm
  21. 21. 食品成分データベース http://fooddb.mext.go.jp/ 検索DBはあるけど、Raw Data Now !!
  22. 22. Department of Agricalture http://www.ars.usda.gov/Services/docs.htm?docid=22771 米国ではバルクダウンロード可能。
  23. 23. 日本人の食事摂取基準データは?
  24. 24. こちらも、全て P・D・F!! 出展:厚生労働省省ウェブサイトを加工 http://www.mhlw.go.jp/stf/shingi/0000041824.html
  25. 25. Tabula PDFからデータを抽出する フリーツールといえばこれ。 • Knight-MozillaのFellowとProPublicaの有志によって2013 年に公開。(もちろんオープンソース) • ローカルサーバーで動作。 • JRuby scriptでApache PDFBox Java libraryを動かし、 XML化してデータを抽出。 • WindowsとMacにインストール可。 http://tabula.nerdpower.org/
  26. 26. Webスクレイピングツールと して有名なのは以下3つ。 http://www.kimonolabs.com/ https://import.io/ https://scraperwiki.com/
  27. 27. 今回はScaperWikiは除外します。 理由 1.Python,R,Rubyで処理を書く必要がある。 2.無料では3つしか処理・データセットを作れない。 CKANにパブリッシュできたり、ODataでデータ共有できた り、PDFからデータ抽出出来たりと、オープンデータに必要 な差別化された特徴もあるんだけど…。
  28. 28. 特徴 • Webアプリケーション 完全にインターネット上で動く。 • Paginationが得意、クローリングが苦手 Paginationはimport.ioよりちゃんと動作する。 クローリングは得意ではないが、APIの組み合わせでク ローリングもどきはできる。 • スケジューリング可能 完全にインターネット上で動く。
  29. 29. 料金プラン http://www.kimonolabs.com/pricing
  30. 30. スクレイピング (Pagination) 実践 http://info.finance.yahoo.co.jp/history/?code=3828.T&sy=1983&sm=3&sd=15
  31. 31. クローリング 実践 http://www.family.co.jp/goods/safety/index.html
  32. 32. データの引き出し • APIのエンドポイントはJSON、CSV、RSSを用意。 • 一回で2500レコードしか取得できないが、分割取得できる。 例)kimoffsetを使って、1万レコードを4回に分割。 http://www.kimonolabs.com/api/{API_ID}?apikey={YOUR_API_KEY} http://www.kimonolabs.com/api/{API_ID}?apikey={YOUR_API_KEY}&kimoffset=2500 http://www.kimonolabs.com/api/{API_ID}?apikey={YOUR_API_KEY}&kimoffset=5000 http://www.kimonolabs.com/api/{API_ID}?apikey={YOUR_API_KEY}&kimoffset=7500 • クローリングに時間がかかる処理の場合、例えばクローリン グ最中でも取得した途中結果を取得できる。 • 複数ページもしくはPaginationでスクレイピングした場合、 ページごとのデータを取得できる。 http://www.kimonolabs.com/api/{API_ID}?apikey={YOUR_API_KEY}&kimbypage=1
  33. 33. データの引き出し • バージョン履歴で取得出来る 同APIで過去に取得したデータはVersionでカウントアップして保存されている。 http://www.kimonolabs.com/api/{VERSION_NO}/{API_ID}?apikey={YOUR_API_KEY} • 時系列データとして取得できる 一つのプロパティのみを取得するAPIを作成し、kimseriesで取得。 http://www.kimonolabs.com/api/{API_ID}?apikey={YOUR_API_KEY}&kimseries=1
  34. 34. 特徴 • クライアントアプリケーション スクレイプ処理、クローリング処理はクライアントで動く。 • Paginationが苦手、クローリングが得意 Paginationがうまく動作しないことはユーザーフォーラムでも挙がって おり、改善中のよう。 クローリングは細かい設定も可能。ただ、速度はPC環境依存。 • スケジューリングが出来ない アプリケーション上で手動で実行する必要がある。 クライアントライブラリを使えば、一応スケジューリング出来る。
  35. 35. 単一ページのテーブル 形式やリスト形式など から、アルゴリズムで 自動的に同様のデータ を抽出できる。 Extractorsのようにマッ ピングしたデータとマッ チするパターンのページ をクローリングしてデー タを取得する。 サーチボックスに連動した Extractorsを作成する。 Pagination機能あるのはこれ だけ。 データの引き出し
  36. 36. 料金プラン https://import.io/pricing
  37. 37. Crawler 実践 http://www.kagome.co.jp/products/food/
  38. 38. Connector 実践 http://shopping.nifty.com/
  39. 39. データの引き出し • スプレッドシート アプリケーション ExcelとGoogleSheetsへWebインポートし、自動更新処理 で常に最新のデータを取得できる。 • クライアント ライブラリ Java、C#、Python、Object-C、Rubyなどを用意。 スケジューリングが出来ないという弱点があるが、ライブラリで 抽出→DBへ格納も出来る。 • パッケージ 先週、PythonとRubyのパッケージが公開! Python https://pypi.python.org/pypi/Importio/ Ruby https://rubygems.org/gems/importio
  40. 40. 効率的 かつ 迷惑をかけないためのお作法 (時系列データの場合) 1.取れるだけ全てのデータを一気に抽出する 2.抽出した全データをDBに格納する 3.データの更新頻度と更新量に応じて、 上位にあるデータのみ抽出 4.全データを格納したDBに差分更新する Roger Walch CC BY-NC-ND 2.0
  41. 41. One more thing... 時系列データを スクレイプした場合 Ken Teegardin CC BY-SA 2.0
  42. 42. Big data landscape v 3.0 Matt Turck (FirstMark) from Matt Turck
  43. 43. Big data landscape v 3.0 Matt Turck (FirstMark) from Matt Turck
  44. 44. 以下のサービスは、データの検索 サイトであり、誰でもアップロー ドできる。
  45. 45. • 800万以上のデータセットを検索可能 • APIなどでの取得が5000回/時まで可能 • TOOLBELTをインストールすることで、スクレイピングから のアップロードが可能 Windows,Mac,Linuxに対応。もちろんローカルにあるファイル指定でアップ ロードも可能。 • Excelプラグインで容易にデータをインポート • 豊富なパッケージライブラリ R,Python(Pandas),Julia,Matlab,Stata,C#,Java,.NET,Clojure etc. http://www.quandl.com/
  46. 46. Enjoy Data Hunting ♪ Thank you !! gfpeck CC BY-ND 2.0

×