髙妻智一WEBクローリングとヘッドレスブラウザとは?ツイートシェアはてブLINEPocketWEBクローリングって何?WEBクローリングとはWEBサイト情報をAPIから取得し、複製・保存することです。WEBクローリングを使用している有名なWEBサービスとしてはマネーフォワード、Indeed、iQON等があります。マネーフォワードは顧客の銀行講座情報を取得し全ての入出金を可視化、indeedは様々な企業ホームページから採用情報を取得して転職先を探している人に公開、iQONは100を超えるECサイトから商品情報を取得し公開しています。自分がNode.jsばっかり使ってるのでNode.jsのクローリング方法について書きます。Node.jsはJavaScriptで書けて簡単に始められるメリットがあるのでおすすめです。WEBクローリングの方法は大きく分けて2つ方法があります。GUIのないブラウザ(ヘッドレスブラウザ)を使用したクローリングとAPIを直接使用したクローリングです。この2つの方法についてメリット・デミリットを含めて以下で説明したいと思います。ヘッドレスブラウザ-SpookyjsヘッドレスブラウザとはGUIのないブラウザのことです。このGUIのないブラウザをNode.jsから扱えるのがSpookyjsになります。Spookyjsは内部でCasperjsとPhantomjsを使用しています。この3つのライブラリの関係は以下です。Spookyjsの大元の技術で、PhantomjsがGUIのないヘッドレスブラウザを実現している。Phantomjsをより使いやすくしているライブラリ。CasperjsをNode.jsから使用できるようにしたライブラリ。Spookyjsのメリットログインが必要なサイトのクローリングに適している非同期でデータを取得しているサイトでも非同期を意識せず簡単にクローリングできる画面全体のスクリーンショットを簡単に取得できるSpookyjsのデメリットレンダリングしているので処理が遅い追加読み込み部分だけを取得することができないため無限スクロールがあるサイトのクローリングには適さない処理スピードによるところが大きいがサイト内を網羅的にクローリングするのには適さないコードを書く時のスコープが独特なので慣れるのに時間がかかる。レンダリングまでの時間があるため処理待ちを挟むなどコードを書く時にコツを知らないと最初は難しいAPIから直接取得そのままの意味ですね。自分でWEBサイトのAPIの構造を理解してHTMLまたはjson等を取得して解析することです。APIを叩くモジュールとしてsuperagentをよく使用します。superagentはシンプルで使いやすいのでおすすめです。APIのメリット軽量かつシンプルで扱いやすいHTMLのレンダリングを挟まないのでSpookyjsより早く処理できる無限スクロールがあるサイトでも追加読み込み専用のAPIを叩いて追加部分のみのデータを取得できるAPIのデメリットログインが必要なサイトでは使えないまとめログインが必要なWEBサイトはSpookyjsを使うと楽。大量のページをクローリングする場合はAPIを直接叩いてサイト情報を取得した方が早い。クローリングを行う場合は上記メリットデメリットと照らし合わせてみて、どちらの方法で行うのがいいか一度考えてから取り組むといいと思います。自分の場合はログインが必要ないサイトはAPIを叩くようにしています。ログインが必要なサイトだけ仕方なくSpookyjsを使っているといった感じですね。参考にしてみてください。次回はSpookyjsを使ったクローリングの方法について書きます。関連記事Spookyjsの使い方を下記リンク先に書きました。Spookyjsを使ったクローリングおすすめ書籍JavaScriptとNode.jsを使ったクローラー作成について学びたい方におすすめの書籍です。手書き文字の認識、解析結果のグラフ描画など、どのように分析するのか解説されています。一通りクローリングとスクレイピングを学びたい人におすすめの一冊です。スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。Incにブロックチェーンエンジニアとして入社。コメントをキャンセルメールアドレスが公開されることはありません。2016のキーを外す方法RECOMMENDこちらの記事も人気です。