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(リクエストが成功)」となり、「ページタイトル」を取得することができました。





コメント