なんでも雑記ワークダイアリー

20代後半サラリーマン。パラレルキャリな生活を送りながら、お仕事系・なんでも雑記系のオピニオン記事中心です。

ウェブサイトのデータを簡単に取得出来る、無料スクレイピングソフトがすごい

スポンサーリンク

f:id:zakkiworkdiary:20161118212530p:plain

ウェブのデータやリスト、情報などを効率よく取得する時はよくスクレイピングというテクニックを使います。

実際のやり方は、サイトの構成にあったコードを書いて実施するのですが、正直のそのコード書くことに時間がかかってしまったり、汚いコードを書いてしまってサーバーに負荷をかけたり、運営者から怒られたり。。。

正直初心者にはちょっとハードルが高いです。

しかし、今回紹介するImport.io(Import.io | Extract data from the web)というサービスは、なんとそんなスクレイピングをURLを打ち込むだけで簡単にやってくれます!

ちょっとしたスクレイピングや、ウェブサイトからのデータ収集には驚くほど便利のサービスです。

そして無料。

今日はその概要と、使い方、実例を交えたスクレイピングをご紹介したいと思います。

スクレイピングとは

スクレイピングは、ウェブサイトなどからコンテンツ情報を抽出する技術のことです。

手動でコピペなどやる手間を省き、全て機械が対象のウェブページを舐めてくれて、情報を取得してきてくれます。そしてその情報をCSVなどに書き出してくれます。

よくクローラーとも言われています。

私も業務で多用することがあるのですが、主に統計やデータ分析に使用するので、PythonやRなんかで書いております。

しかし、そんな知識がなくとも簡単にそのスクレイピングやってくれるのが、今回ご紹介するImport.ioです。


実際のやり方

今回は実例を交えながら使い方をご紹介するので、下記の

物件情報を不動産サイトの「SUUMO」を例として、新宿区1LDK、築15年以内、バス・トイレ別の物件データを対象にスクレイピングを行います。

まずは対象の条件で検索結果の一覧を表示させます。

f:id:zakkiworkdiary:20161118215240p:plain:w300


URLをImport.ioに入力する

まずは情報を抜き取りたいURLを取得し、下記のImport.ioサイトに入力します。

Import.io | Extract data from the web

ここではSUUMOの物件情報を新着順に100件表示させるようにして、そのURLを貼り付けます。

f:id:zakkiworkdiary:20161118215156p:plain

「Try it out」のボタンを押すとサイトにもよりますが数分Import.ioが処理を行います。

途中で宣伝的なものが出てきたら、とりあえず「Got it」を押して次へ進見ます。

下記のようなページが出てくるのですが、基本的に日本語のサイトであれば「Start with blank page」を選択しましょう。

f:id:zakkiworkdiary:20161118215604p:plain


取りたい情報のを選択する

そして次のようなページになるかと思います。

先程入力したURLのページが表示されます。

f:id:zakkiworkdiary:20161118215827p:plain

ここで大切なのは「Column」という概念です。

最終的なアウトプットはCSVのテーブルになります。

なので、この「Column」と言うのはその列の列名、ヘッダーとなります。

今回の場合は、家賃や、物件名、広さなどがそれに当たります。


まずは「家賃」を取りたいので、ページの家賃が載っている箇所を数か所選択します。 ※できるだけ2つ以上、少なくとも4〜5個選択ほうがうまくいきます。

f:id:zakkiworkdiary:20161118220257p:plain

選択するところはピンクになっていくのですが、いくつかやっていくと、家賃の欄だけが、緑色に自動選択されます。

ここまで来たらImport.ioはこの欄を「家賃」と認識してくれたので、「Add Column」を押して次のカラムを選びます。

f:id:zakkiworkdiary:20161118220550p:plain


他に取りたい情報を追加していく

Add Columnを押すと、先程とおなじように新しいカラムが出来ます。

また、家賃と同じように対象の場所を4〜5箇所選択していくと、以降の箇所が緑で自動選択されていきます。

それでImport.ioが法則性を見いだせたので、新たにカラムを足していきます。

下記のように、家賃と同じ要領で次々と取得したい場所を選択しては、カラムを足していきます。

f:id:zakkiworkdiary:20161118221039p:plain

今回は家賃の他にも、平米数、管理費、最寄り駅、物件数をとってきました。


エクスポートする

必要な情報が取れたら、今度はその情報をエクスポートします。

右上の「Done」を押すと、ログインが求められます。

無料なので、なんでもいいかと思いますが、私はFacebookIDを使いました。

f:id:zakkiworkdiary:20161118221430p:plain

すると下記のようなダッシュボードが現れるので、「Run URL」をクリックします。

f:id:zakkiworkdiary:20161118221604p:plain

数分かけてImport.ioがスクレイピングを実行してくれます。

終了すると下記のような画面になりますので、枠線のボタンを押してダウンロードをしましょう。

f:id:zakkiworkdiary:20161118221805p:plain

JSONかCSVを選ぶのですが、ここではCSVを選びます。


データを確認する

ダンロードされたCSVを開いてみると、ちゃんと100件スクレイピング出来てますね!!

f:id:zakkiworkdiary:20161118221944p:plain


出てきたデータを少々加工して色々見てみましたが、やはり賃料と平米数はプラスの相関はありそうです。これである程度の相場は予測できるかも知れません。

f:id:zakkiworkdiary:20161118222954p:plain

賃料ごとのヒストグラムも出してみましたが、新宿区1LDKは10万円前後と14万円〜16万円で二分されているようです。

f:id:zakkiworkdiary:20161118222928p:plain


更にデータを足すには

今回は100件でしたが、もっと物件数を足したい!というときには、URLを足すことがImport.ioでは出来ます

先程の「Done」を押す前に、「Add URL」というボタンを押すと、更にURLを入力することを求められます。

f:id:zakkiworkdiary:20161118223303p:plain

そこに先程のSUUMOページの”2ページ”目のURLを入力して、全く同じ事を繰り返せして「Done」をすればOKです。

この時カラムの順番などは揃えましょう。

SQL分かる人には、「Add URL」はUnion ALLみたいなものです。


お手軽さの限界

簡単なスクレイピングは大変便利なサービスですが、課題点はいくつかあります

まず、先程の用にURL先からのみからしかスクレイピングしてくるので、URLをこちらで都度入力しなければなりません。

また、クローラー作成の時はClassなどを指定しますが、Import.ioの場合は実際に画面を選択してClassを認識させます。

もっと高度で、大量で柔軟なのクローリングをするにはまだまだ力不足ではあります。

更に汚いサイトは、正直難しいです。


ただ、無料版の回数制限ありますが、MAXに足したことは私もないので、多用しても限度行くことは無いかと思います。(制限に達したら、ログインIDを変えればいいだけの話)

正直有料版で何で出来るのかが不思議なくらいです。


まとめ

スクレイピングは先程のサイトの用に、情報がある程度まとまっているサイトのある箇所だけ抜き出したい!と言う際に大変役に立ちます。

上記のような物件の平均値を見つけたり、オークションサイトの平均値段などを算出するには面白いかもしれません。

最初はなれないかもしれませんが、ぜひ使いながら慣れていってください!

いままでウェブサイトからコピペしてた時間は圧倒的に短縮出来るかと思います。


もっと高度なスクレイピングをしたい方には

もっと高度な事をやりたいという方には、私は、Pythonで実施をオススメします。

その後数列処理や統計的処理行うにには結構相性がいいです。統計・機械学習系ライブラリも豊富です。

個人的には、有名なオライリーシリーズのスクレイピング入門書が基礎からしっかり学ぶには最適と思います。