読者です 読者をやめる 読者になる 読者になる

おしい県でWebに携わって働く人のブログ

基本的にはIT&Web界隈に関する役に立ちそうなことをまとめていきます。

「Webスクレイピングとは何ぞや?」という疑問が浮かんできたので調べてみた。

f:id:lord_cashew:20131226165118j:plain
最近よく聞く、、、わけではありませんが、なんとなく自分の中で「Webスクレイピング」について知りたくなったので、ググったりして調べてみました。

「Webスクレイピング」とは

Webスクレイピングとは、WebサイトからWebページのHTMLデータを収集して、特定のデータを抽出、整形し直すことである。Webスクレイピングを行うことで、Webページを対象として、あたかもWeb APIを利用しているかのようにデータを効率的に取得・収集することが可能になる。用途の例としては、部分的にコンテンツを取り出して携帯電話向けのコンテンツを生成したり、小見出しの一覧を生成したり、といった使い方あある。Webスクレイピングは様々な手段で実現可能であるが、PHPやPerlといったスクリプト言語を使用して行われることが多い。なお「スクレイピング」(scraping)とは元々「削る」や「こすり落とす」といった意味の英語である。
IT用語辞典より転載

要するに、対象のWebサイトからいろんなデータ(テキストやMETA情報など)を好きなように抽出して取得することを「Webスクレイピング」というみたいです。

プログラム的にWebスクレイピングをしたい

Webスクレイピングはいろいろな言語で実現することができます。今回は4種類の言語をピックアップしてみました。

1. PHP

f:id:lord_cashew:20140321181837p:plain
「PHP」でWebスクレイピングしたい場合は「PHP Simple HTML DOM Parser」というライブラリを使うと良い感じになります。詳しくは下の記事を参照してみて下さい。
PHP Simple HTML DOM Parserの使用方法 - Webスクレイピング ライブラリ

2. JavaScript

f:id:lord_cashew:20140321181543p:plain
「JavaScript」でWebスクレイピングしたい場合は「CasperJS」というツールを使うと良い感じになります。詳しくは下の記事を参照してみて下さい。
casperJSでwebスクレイピング | THE SPORTS BUSINESS

3. Ruby

f:id:lord_cashew:20140321181643p:plain
「Ruby」でWebスクレイピングをしたい場合は「Nokogiri」というライブラリを使うと良い感じになります。詳しくは下の記事を参照してみて下さい。
Nokogiri を使った Rubyスクレイピング [初心者向けチュートリアル] - 酒と泪とRubyとRailsと

4. Python

f:id:lord_cashew:20140321181740p:plain
「Python」でWebスクレイピングをしたい場合は「Scrapy」というフレームワークを使うと良い感じになります。詳しくは下の記事を参照してみて下さい。
PythonとかScrapyとか使ってクローリングやスクレイピングするノウハウを公開してみる! - orangain flavor

Webサービスを使ってお手軽にWebスクレイピングしたい

f:id:lord_cashew:20140321174158p:plain
kimono : Turn websites into structured APIs from your browser in seconds

あらゆるWebサイトをスクレイピングしてAPI化してくれるWebサービスが「kimono」です。特別なプログラムを使う必要は全くなくて、ブラウザ上でクリックするだけで、対象のWebサイトからデータ(JSON / CSV)を抽出することができます。
ちなみに、使い方については下の2記事に詳しく書いてありますので、興味ある方は参照してみて下さい。

*参考記事
指定したウェブサイトをスクレイピングしてAPI化してくれるサービス「kimono」*二十歳街道まっしぐら
クリックだけであらゆるサイトをスクレイピングできるWebサービス「kimono」が凄い

Webスクレイピングの参考スライド(SlideShare)

上のツールを使う前に、まずはこれらのスライドをサラリと眺めて勉強してみたら良いかもしれません。

個人的な感想

なんだかこの「Webスクレイピング」は面白そうなので「Webスクレイピング」使って何らかのWebサイトでも制作してみたいものですね。少し考えてみることにします。。。