プログラムによってウェブサイトから情報を抽出する技術であるWebスクレイピングについてまとめます。また、Webスクレイピングにおすすめの言語もご紹介します。
目次
Webスクレイピングとは?
ウェブスクレイピング(英: Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラー[1]あるいはウェブ・スパイダー[2]とも呼ばれる。
ウェブスクレイピング – Wikipedia
簡単に言うと、プログラミング言語を使い、インターネット上の情報を取得する行為です。付随して、取得した情報を加工する技術についても絡めて説明されることが多いです。
最近で言うと、機械学習(マシンラーニング)なども、併せて紹介されることが多いようです。
Webスクレイピングの用途やメリットデメリット
用途及びメリット
例えば、商品の紹介ページのように、類似した構造のデータを取得する場合に向いています。人間の手で行うとすると、複数のページをクリックして確認する作業が必要になります。
1000ページあったりするととても人の手では行えません。
また、同じページであっても、日々データが更新されるページの情報を取得するにも向いています。例えば、株価の情報を取得したりなど。
デメリット
いくつかありますが、サーバーに負担がかかります。サーバーは、ロボット向けに情報を発信しているわけではありません。人間向けに情報を発信していることが殆どです。
プログラムによるアクセスは時にはサーバーの致命的なエラーに繋がったり、場合によっては業務威力妨害など刑事責任を問われることがあります。
その点のマナーなども、書籍に記載されていることがほとんどで、プログラムを使用し回避する工夫などもありますので、是非活用したいです。
PerlでのWebスクレイピング
Webスクレイピングの古典的名著と言えば当書籍です。
学習題材も古く、掲載されているコードそのままでは動作しない箇所が多々あります。
Perlは表現力の高い言語で、ライブラリも豊富です。しかし、Webスクレイピングをする上で、主流の言語ではなくなってきましたので、一部ライブラリのメンテナンスなどが行われていないようです。
また、Perlの習得コストは非常に高いです。これから勉強する方にはおすすめ出来ません。
もっとも、他言語でWebスクレピングの経験がある方が、アイディアを得る上で当書籍を取るのはよいかもしれません。他書籍には無い、濃い情報が詰まっています。
Amazonでは、中古だと1円から出品されています。
非常にお勧め出来る言語です。
スクレイピングをする上で必要なライブラリが一通り揃っております。
現状、Pythonがベストな選択肢だと思いますが、Rubyもお勧め出来ます。
Pythonを比較して、軽量なライブラリのみで実装出来るのがメリットです。また、Nokogiriというライブラリが非常に秀逸で、Pythonの同等のライブラリよりもずっと使いやすいです。
以下の書籍は、Webスクレイピングの流行のキッカケとなった神書籍です。Webスクレイピングのマナーを含め、初歩的なところから、幅広い内容を扱っているので一読をお勧めします。
PythonでのWebスクレイピング
現状、一番お勧め出来る言語。
スクレイピングに必要なライブラリは一通り揃っております。
また、昨今、スクレイピング関連の書籍が大量に刊行されたことによって、情報が豊富です。ネット上の情報を検索する場合にも、これらの書籍を引用していることが多いので、読んでおいて損は無いと思います。
一番お勧め出来る書籍は以下です。
JavaScriptでのWebスクレイピング
基本的には、RubyかPythonが書きやすく使いやすいと思います。
最近、Javascriptで書かれている、Electronという、クロスプラットフォームのデスクトップアプリケーションフレームワークが話題になっております。
ElectronをからPythonなども叩けるようですが、回りくどいやり方になります。
Electronを使うなどを検討しているならJavaScriptはベストな選択肢だと思います。
VBAでのWebスクレイピング
ソースコードを書いてみるとわかりますが、PythonやRubyで取得するよりも非常に面倒な書き方となります。
趣味でやる方にはお勧めしません!!!
しかし、職場で非プログラマーの方が使う場合、役立つかもしれません。PythonやRubyなどの環境を簡単にインストール出来ない場合が多いかと思います。
比較的簡単に環境を構築することが出来、取得したデータをエクセルのシートなどにセット出来るのは一部の方にとっては非常に魅力的だと思います。
以下、僕の運営する別ブログにて、チュートリアル記事を書きました。
【チュートリアル】エクセルVBAでWEBスクレイピングする方法WindowsPowerShellでのWebスクレイピング
Windows7以降では、MS-DOSに変わる次世代プロンプトとして、WindwosPowerShellが標準搭載されました。
標準でIDEも同梱されており、デバッグも容易であるなど、非常に優れております。C#でコマンドレットを追加出来るなど、機能拡張性にも優れております。
会社の環境にRubyやPythonはインストール出来ないけれども、VBAでは貧相過ぎて使えないという方には、お勧め出来る選択肢です。
専用の書籍はありませんが、以下の書籍に一部サンプルが掲載されております。
その他 | プログラミング言語を使わずWebスクレイピング
プログラミング言語を使うとすればという縛りでご紹介して来ましたが、
Webスクレイピング用のサービスを使ったり、
- Excelの機能を使ったり、
- Googleのスプレッドシートを使ったり、
- 非プログラマーの方が使える技も多々あります。
その点に焦点を絞った書籍が以下です。
著者は、佐々木拓郎さんと言って、Rubyの書籍の著者と同じ方です。
Webスクレイピングのプログラミング言語まとめ
Webスクレイピングにより、効率良く情報を集め、加工する技術を身に付けることが出来ます。
この技術は、職業プログラマのみならず、非プログラマーにとっても重宝すると思います。
Webスクレイピングで人生変わりますよ!僕なんか、Webスクレイピングで食って言っていると言っても過言ではありませんから。