プログラマでありたい

おっさんになっても、プログラマでありつづけたい

非エンジニアでも何とか出来るクローラー/Webスクレイピング術

遅くなりましたが、クローラー/Webスクレイピング Advent Calendar 2016の4日目です。先日、データを集める技術という本を出しました。冒頭の部分は、次のように始まっています。

 2014年8月に「Rubyによるクローラー開発技法」という本を出版しました。書名の通りRubyというプログラム言語を使って、自作のクローラーを作りデータ収集を効率化しようという本です。ニッチなテーマにも関わらず、多くの方に読んで頂けたようです。想定以上の売れ行きで不思議に思って読者層を調べてみると、プログラム書にも関わらずマーケッターやコンサルタントなどITエンジニア以外の読者の方も多かったようです。ITエンジニア以外も読むかもということは、執筆時にある程度念頭には入れていたものの、結果としては想定以上の比率でした。
 そこで、もっと多くの人にデータ収集術を知ってもらう為に本書を執筆しました。前著に較べると、出来るだけ簡単にデータを収集するためのノウハウを中心にしています。ツールを組み合わせてプログラムすることなくデータを集める方法や、Excel・Google スプレッドシートのセル関数などを使う方法、またプログラムする場合もExcelのVBAやGoogle Apps Scriptなど、プログラム環境の構築が不要なもののみを扱っています。その為、プログラマはもとより、プログラマ以外の人でも見よう見まねでクローラー/スクレピングができるのではないでしょうか。

 ここに書いている通り、クローラー/スクレイピングという技術は、エンジニア以外にも有効です。ある意味、エンジニア以上に必要としているかもしれません。一方で、そういう手段すら知らずにいる人が大半だと思います。そこで、出来るだけ多くの人にクローラー/スクレイピングの技術に触れられるようにと考えています。

比較的簡単なスクレイピング方法



 個人的なお勧めの順としては、次のようになっています。なんとExcel + VBAを1番にあげています。

1. Excel + VBA
2. Googleスプレッドシート+セル関数(importxml関数)
3. Googleスプレッドシート+Google Apps Script
4. Import.io

 理由としては、何故かExcelの場合だとプログラムにアレルギーを持っている人も頑張って理解しようとしてくれるのですよね。次のGoogle系の場合、アカウント持っているよという人が比較的多いです。(と言っても、Excel使ったことがあるよという人に較べると、1/10くらいの感覚ですが。)最後のImport.ioが実は一番簡単なのですが、コンソールが英語という所で脱落する人が多いです。

Excel + VBAでスクレイピングの手順



 Excel + VBAでのスクレイピング手順については、こちらのスライドで簡単に説明しています。
www.slideshare.net


 また、データを集める技術で頑張って説明していますが、本質的な部分は、下記の5点くらいです。

  • InternetExplorerクラス
  • HTMLElementCollection
  • getElementByTagName
  • getElementsByClassName
  • getElementById

それぞれの役割は、下記の図のとおりです。
f:id:dkfj:20161205080758p:plain

これを使ってプログラミングしたのが、次のような感じのものです。
f:id:dkfj:20161205080805p:plain

比較的簡単です。頑張れば、プログラミングをやっていない人でも何とかできるかなというレベルです。

クローラー/Webスクレイピングの将来



 個人的には、今後はスクレイピングという技術は、サービス化がもっと進むと思います。今はなくなったkimonolabsやimport.io、あるいはscrapy系のサービスのようなものの普及が進むと思います。ただし、もう一段先があって、サイト運営者自身によるAPIの提供が当たり前になる時代が来るのではないかと思います。その為の、APIのマーケットの整備も進みつつあります。一般人が使う技術としてのクローラー/スクレイピングは、過渡期の技術だと思っています。

感想



 とりとめのない話で発散しましたが、ディスクワークする人にとってはクローラー/スクレイピングという技術があることだけでも知っておいた方が何かと便利です。一昔前に較べると、HTMLも構造化され、それを取るための手段も沢山でてきています。問題のならない範囲で気をつけた上で、是非一度試して貰えればと思います。プログラミングをしたことがない人にとっては、プログラミングの楽しさを知るキッカケにもなると思います。

データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)

データを集める技術 最速で作るスクレイピング&クローラー (Informatics&IDEA)

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

See Also:
「データを集める技術」という本を執筆しました