データサイエンティストハトリのブログ

PythonとインテリジェントクラウドとAIが好きな学生エンジニア。データ分析、スクレイピング、就職活動などについて書いていきます。

Webスクレイピングはどのプログラミング言語でやるべきか?オススメ言語5選を比較!

f:id:hatorihatorihatorik:20181005020043p:plain


 

こんにちは、どうもハトリです!!

TwitterでプログラミングやIT関連のことについてつぶやいているのでよかったら是非フォローしてください →→(@tori_engineer)

 

 

Webスクレイピングとは

ウェブスクレイピングとは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。 通常このようなソフトウェアプログラムは低レベルのHTTPを実装することで、もしくはウェブブラウザを埋め込むことによって、WWWのコンテンツを取得する。

参考:ウェブスクレイピング - Wikipedia

 

スクレイピングは今や欠かせないかなり便利なツールとなっています。

私自身スクレイピングを使って、Apple StoreGoogle Storeのレビューを解析することで、アプリのバグをいち早く発見しようという研究をしていますが、ここでもスクレイピングの技術は必要になってきます。

 

多くの情報を効率よく集める。そんな時にこのWebスクレイピングは効果的だと言えるでしょう。

 

スクレイピングはどの言語でやるべきか

世の中には様々な言語がありふれていますが、スクレイピングはどの言語でやるのが有効なのでしょうか。

多くの場合Pythonを使うのが一般的でしょう。スクレイピングのやり方を調べるとほとんどがPython前提で書かれていたりします。一方でRubyPHP, Javascriptのような言語でもスクレイピングを行うことは可能です。

 

ではこれらの言語でスクレイピングを行うとどのような点で異なって、どの言語がどれくらいスクレイピングに適しているのかを比較しながら解説していきたいと思います。

 

言語の選ぶ2つのポイント

f:id:hatorihatorihatorik:20181005020142p:plain

スクレイピングをどの言語で行うかについては2つほど基準を設けました。この2点をまず参考にしながらスクレイピングを行う言語を決めて行ってください。

基本はPython

基本的にPythonスクレイピングを行なってください。理由は以下の2点

 

  1. ライブラリが充実していて基本的になんでもできる
  2. ネット上の情報や書籍が充実している

 

世間的に、いや世界的にはスクレイピングPythonで行うものだと認識されています。なぜかというとPythonにはスクレイピングを行うためのライブラリがかなり充実しており、どんなことでも大抵行うことができるからです。

 

スクレイピングはかなり奥が深く、それぞれのサイトによってスクレイピングのやり方が異なっていたり、時にはスクレイピングしにくいサイトなんかも存在します。

こういう時にいろんなサイトに対応できるPythonであれば確実にスクレイピングを行うことができますよね。

 

また、多くの人がPythonを使っているが故に、ネット上に情報がたくさんころがっています。書籍もたくさんあります。そうすると、たまにでるエラーや取得したい値がとれないときなどに、軽くググればすぐに同じ悩みを解決した事例を見つけることができます。

 

このようにいろんなメリットがあるのでとりあえずPythonというのは間違っていないのかなというのが私の個人的な意見です。

アプリ内で使うなら開発している言語

Webアプリを作成する時にスクレイピングを使いたくなる時もあるでしょう。(できればAPIがあるのがのぞましいですが、、)

 

例えば、Ruby on Railsを使ってアプリを開発している時に、スクレイピングの部分だけPythonで書いたらどうなるでしょうか。普通にやりづらいし不具合の原因にもなります。なるべく避けたい事態です。

 

このような時はRubyを使ってスクレピングをしてください。もちろんPHPで開発しているならPHPスクレイピングをするべきですし、JavascriptならJavascriptがいいでしょう。

 

もっとも重視すべきことは作業効率だと思っています。

どの言語を選ぶとどのくらいの時間がかかるのかをしっかりと開発前に確認してから作業に取り掛かるといいのではないでしょうか。

 

スクレイピング言語の比較

f:id:hatorihatorihatorik:20181002154856j:plain

Python

先ほども書いた一番オススメできる言語です。スクレイピングに必要なライブラリは全て揃っています。Beautiful Soupというライブラリが有名です。

モダンでリッチなサイトをスクレイピングするためのseleniumなんていうライブラリもあります。

 

Pythonでのスクレイピングはかなり書籍が出ています。

  1. 書籍で体系的に学ぶ
  2. とりあえずスクレイピングしてみる
  3. 詰まったらググる

というのが個人的にオススメの勉強法です。

 

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

これだけやっておけばPythonの大抵の自動化技術については完璧になります。かなり分厚いので辞書的な使い方がいいかもしれません。

 

スクレイピングだけではなく、正規表現を使って入力フォームを作ったり、画像解析をしたり、Excelにファイルを読み書きしたり、自動でメールを送信させたり・・・・など本当にいろんなことがPythonでできるんだよーってことがわかります。

 

もちろん、スクレイピングもあるのでこの1冊だけをとりあえず極めておくのはかなりオススメです。

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

PythonによるWebスクレイピング

スクレイピングに特化した本です。1冊まるまるスクレイピングのことについて書いてありますが、技術的なことだけではなく、スクレイピングの歴史的事件や、スクレイピングする際に気をつけることなど補足知識が充実しています。

 

とりあえずスクレイピングを極めたい人にはこれがオススメです。

PythonによるWebスクレイピング

Ruby

あまり知られていませんが、Rubyでもスクレイピングを行うことができます。プログラミングスクールに通った方はもしかしたらこれをみたことがある人もいるかもしれません。(T社)

 

Pythonと書き方や言語の性質などがかなり似ていますし、正直Pythonと変わらないくらい簡単にスクレイピングができます。

Nokogiriというライブラリがかなり優秀でスクレピングが簡単にできるようになっています。 

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

Rubyスクレイピングに関しては圧倒的にこの1冊につきます。かなり読むのが大変ですが、この1冊さえ極めればRubyスクレイピングは完璧と言えるでしょう。

 

スクレイピングとセットで覚えておくべきワードとしてクローリングという言葉があります。クローリングを行うためのツールのことをクローラーと呼びますが、この本ではクローリングについても解説しています。

 

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

PHP

PHPスクレイピングに特化した書籍は現在のところ出てきておりません。なので他の言語でスクレイピングの基礎を完璧にした後でぐぐりながらPHPスクレイピングをやっていくというのがオススメの方法です。

 

PHPRubyPythonスクレイピングとだいたいやることは同じなので、RubuやPython本を買っておけば十分対応可能でしょう。

 

 

PHPライブラリ&サンプル実践活用[厳選100] (Software Design plus)

スクレイピングに特化はしていませんが、PHPのライブラリの使い方を紹介しており、そこでPHPスクレイピングのやり方について紹介している書籍があるので一応紹介します。

 

PHPライブラリ&サンプル実践活用[厳選100] (Software Design plus)

 

Javascript(node.js)

Javascriptでもスクレイピングをおこなうことができます。しかし、上記3言語に比べるとすこし難易度は上がるようです。またnode.jsがわりと新し目の言語であるため、ぐぐってもあまり参考にできる記事がありません。

 

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック 

node.jsで開発している方は仕方なく使う、という感じでしょうか。一応javascriptとnode.jsでスクレイピングを行うのに特化した書籍があるので紹介しておきましょう。

 

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

 

VBA

スクレイピングしたデータをExcelに保存したい。という方も多いと思います。そのような方にとってはVBAスクレイピングができるのが理想なのではないでしょうか。VBAスクレイピングを行うことは可能です。

 

しかし、少し書き方がややこしくスクレイピングを行うのが難しくなっています。VBAマスターには申し訳ないですが、昨年にExcelPython対応しております。このためExcelだからといってVBAスクレイピングを行うメリットが少なくなってきています。できるだけPythonを使うことをオススメします。

 

qiita.com

しかし、会社の関係でどうしてもVBAを使わなければいけないこともあるでしょう。

そのような人のためにVBAスクレイピングに特化した書籍を紹介します。

 

 

まとめ 

f:id:hatorihatorihatorik:20181002154858j:plain

スクレイピングはノンプログラマの方でも必須スキルになってくると思います。現代は情報戦です。多くの情報を効率よく集めたものが強者です。

それ以外にもデータ分析スキルや加工する技術などを文系サイドの人間ができたらかなり強いのではないでしょうか。

なかでもこのスクレイピングという技術は、

  • 簡単に習得できる
  • 高度な数学などは一切いらない

などの理由から、この技術はコスパのかなりコスパがいいと言えるでしょう。