JavaScript / Node.jsでWebクローラーの作成とWebスクレイピング

JavaScript / Node.jsでWebクローラーを作り、Webスクレイピングを行ってみます。

なお、JavaScriptの実行にはNode.jsとnpm(Node Package Manager)を使用するので、コンピュータにNode.jsとnpmがインストールされている必要があります。

■PC環境

・Windows10、Administrator(管理者)アカウント

・node –version v14.15.0

・npm –version 6.14.8

■新規フォルダの作成と、crawler.jsという空のファイルを作成する

まずは、新規フォルダの作成と、crawler.jsという空のファイルを作成します。

今回は「C:\Users\Administrator(フォルダパス)」という場所に、「simple-web-crawler」という名前のフォルダを作成します。

■コード

var request = require('request');
var cheerio = require('cheerio');
var URL = require('url-parse');

作成後、コードエディタを開き、上記のコードを記述します。

なお、今回は、下記の3つのライブラリを使用します。

・Request(HTTPリクエストを行う)

・Cheerio(ページ上のHTML要素を解析して選択する)

・URL-parse(URLを解析する)

記述後、ファイルを保存します。保存する際に、「crawler.js」という名前でファイルを保存します。保存する場所は、「C:\Users\Administrator」の「simple-web-crawler」というフォルダになります。

■npmを使用し、ライブラリをインストールする

保存後、npmを使用し、ライブラリをインストールしますが、その前にpackage.jsonというファイルを作成し、今回のプロジェクトの説明と依存関係を指定します。

■コード

{
  "name": "simple-webcrawler-javascript",
  "version": "0.0.0",
  "description": "A simple webcrawler written in JavaScript",
  "main": "crawler.js",
  "author": "Stephen",
  "license": "ISC",
  "dependencies": {
    "cheerio": "^0.19.0",
    "url-parse": "^1.0.5",
    "request": "^2.65.0"
  }
}

そのために、コードエディタを開き、上記のコードを記述します。

記述後、ファイルを保存します。保存する際に、「package.json」という名前でファイルを保存します。保存する場所は、「C:\Users\Administrator」の「simple-web-crawler」というフォルダになります。

保存後、Windows10の検索ボックスで「cmd」と入力し、コマンドプロンプトをクリックします。クリックすると、コマンドプロンプトが起動します。

C:\Users\Administrator>cd simple-web-crawler

起動後、上記のコマンドを入力し、「C:\Users\Administrator」の「simple-web-crawler」というフォルダに移動するために、エンターキーを押します。

C:\Users\Administrator\simple-web-crawler>npm install
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN simple-webcrawler-javascript@0.0.0 No repository field.

added 68 packages from 68 contributors and audited 68 packages in 4.328s

2 packages are looking for funding
  run `npm fund` for details

found 4 vulnerabilities (2 low, 2 high)
  run `npm audit fix` to fix them, or `npm audit` for details

エンターキーを押すと、ライブラリのインストールが開始され、上記のようなメッセージが表示されます。今回はライブラリが古いので、脆弱性が見つかりましたなどの表示がありますが、テストで動作確認を行うため、脆弱性が見つかりましたなどは、いったん無視し進めます。

■JavaScriptでのWebページの取得と解析

ライブラリをインストール後、JavaScriptでのWebページの取得と解析を行います。行う場合は、コードエディタで「C:\Users\Administrator」の「simple-web-crawler」というフォルダの「crawler.js」を開き、Webページの取得と解析を行うコードを記述します。

■コード

var request = require('request'); 
var cheerio = require('cheerio'); 
var URL = require('url-parse');

var pageToVisit = "https://www.yahoo.co.jp/";
console.log("閲覧ページ: " + pageToVisit);
request(pageToVisit, function(error, response, body) {
   if(error) {
     console.log("Error: " + error);
   }
   // ステータスコードの確認 (200はHTTP OK)
   console.log("ステータスコード: " + response.statusCode);
   if(response.statusCode === 200) {
     // ソース内のdocumentのbodyを解析
     var $ = cheerio.load(body);
     console.log("ページタイトル:  " + $('title').text());
   }
});

記述するコードは上記になります。今回はYahoo!Japan(https://www.yahoo.co.jp/)のページの取得と解析を行ってみます。

記述後、このコードを「crawler.js」に上書き保存します。

■実行

保存後、JavaScriptでのWebページの取得と解析を行うため、スクリプトを実行してみます。

実行する際は、Windows10の検索ボックスで「cmd」と入力し、コマンドプロンプトをクリックします。クリックすると、コマンドプロンプトが起動します。

C:\Users\Administrator>cd simple-web-crawler

起動後、上記のコマンドを入力し、「C:\Users\Administrator」の「simple-web-crawler」というフォルダに移動するために、エンターキーを押します。

C:\Users\Administrator\simple-web-crawler>node crawler.js

押した後、上記のコマンドを入力し、エンターキーを押します。

エンターキーを押すと、今回指定したYahoo!Japan(https://www.yahoo.co.jp/)をWebクローラーが収集(クローリング)を行い、「ステータスコード:200(リクエストが成功)」となり、「ページタイトル」を取得することができました。

コメント

タイトルとURLをコピーしました