ホーム >  JavaScript >  cheerio-httpcliモジュールでスレイピングをする(Node.js)

投稿日:   |  最終更新日:

cheerio-httpcliモジュールでスレイピングをする(Node.js)

JavaScriptnode.js

Node.jsのモジュールを使って、Webスクレイピングをしてみます。

node-js-736399_640

 

Webスクレイピングとは?

WebサイトからWebページのHTMLデータを収集して、特定のデータを抽出、整形することです。Webスクレイピングを行えば、簡単にWebページのデータを効率的に取得・収集することが可能です。

用途の例

部分的にコンテンツを取り出して携帯電話向けのコンテンツを生成したり、小見出しの一覧を生成したりできます。Webスクレイピングはnode.js以外の手段でも実現可能です。特に、PHPやPerlといったスクリプト言語を使用して行われることが多いです。

準備

①vagrantインストール済みです。

Vagrantをインストールしてテスト環境を作る for Ubuntu

②NVMとNode.jsもインストール済みです。

NVMを使用してNode.jsをインストールする

※もしvagrant1.8.5でエラーが発生する場合はアップグレードしましょう。

Vagrant 1.8.6にアップグレードしてvagrant sshのバグを解決

③コードの記述に便利です。

atomをUbuntuにインストールする

nodeの実行テスト。

node.jsでwebページのダウンロード

私の環境

ホストOS Ubuntu 16.04.2 LTS 64bit
ゲストOS CentOS7 64bit
CPU Core i5 2520M 2.50GHz
vagrant 1.8.6

cheerio-httpcliモジュールのインストール

①以下の手順でコマンドを入力し、前回インストールしたvagrant環境にログインします。

cd vagrant
vagrant up
vagrant ssh

②モジュールをインストールし、ファイルを設置する作業用のローカルディレクトリを作成します。ここではとりあえず「work_sample」とします。

mkdir work_sample
cd work_sample

③「npm」でモジュールをインストールします。

npm install cheerio-httpcli

④ローカルディレクトリにモジュールがインストールされたか確認します。

ls ../node_modules/

ダウンロードが成功していれば、以下のように表示されます。

cheerio-httpcli 

HTMLファイルをダウンロードする

cheerio-httpcliモジュールのテストを兼ねて、HTMLをダウンロードしてみたいと思います。

①以下のコードを記述し、保存します。

//モジュール読み込み
var client = require('cheerio-httpcli');
 
//ダウンロード
var url = "https://hombre-nuevo.com/"
var param = {};
client.fetch(url, param, function(err, $, res) {
  //エラーがんあいかチェック
  if (err) { console.log("Error:", err); return; }
  // ダウンロードした結果を画面に表示
  var body = $.html();
  console.log(body);
});

・var url = “https://hombre-nuevo.com/”

ここに、ダウンロード先のホームページのURLを記述します。

②保存したファイルを、vagrantの共有フォルダに「getpage.js」を配置します。ホストのsrcディレクトリに配置すると、ゲストOSのwork_sampleディレクトリに反映されます。

・ホストOS(ubuntu)側

  • home/
  • user/
  • vagrant/
  • src/
  • getpage.js

・ゲストOS(centos7)側

  • home/
  • vagrant/
  • work_sample/
  • getpage.js

③以下の手順でコマンドを入力し、「download-node.js」を実行します。成功すれば「OK」と表示されます。

node download-node.js

成功すれば、以下のようにhtmlのソースが表示されます。

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="ja"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8" lang="ja"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9" lang="ja"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="ja"> <!--<![endif]-->

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="Content-Language" content="ja">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <meta http-equiv="Content-Script-Type" content="text/javascript">
〜(省略)〜
トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告