目次

はじめに
表記関係について
第1章 前提知識と開発環境の構築
1.1 Node.jsとは
1.2 Node.jsのインストール
1.3 WindowsでPathが通っていないとき
1.4 WindowsでNODE_PATHが設定されていないとき
1.5 Visal Studio Codeのインストール
1.6 Visal Studio Codeの利用
第2章 nodeコマンドとnpmコマンド
2.1 nodeコマンド
2.2 npmコマンド - 基本
2.3 npmコマンド - プロジェクトの作成
2.4 npmコマンド - パッケージのインストール
2.5 npmコマンド - パッケージのアップデート他
第3章 プロジェクトの作成と実行
3.1 プロジェクトの作成
3.2 プログラムの作成
3.3 プログラムを実行
第4章 JavaScript速習1 基本
4.1 JavaScriptの勘所
4.2 事前知識
4.3 変数と定数
4.4 数値
4.5 文字列
第5章 JavaScript速習2 配列やオブジェクト
5.1 配列とfor文
5.2 オブジェクト
5.3 分割代入
第6章 JavaScript速習3 関数、制御構文他
6.1 関数
6.2 様々な値とif文
6.3 エラー処理
6.4 クラス
第7章 JavaScript速習4 非同期処理とPromise
7.1 非同期処理
7.2 Promise resolve then
7.3 Promise resolve then 2
7.4 asyncとawait
7.5 Promise reject catch
7.6 Promiseの静的メソッド
第8章 コア モジュールとnpmモジュール
8.1 コア モジュール
8.2 npmモジュール
8.3 import
8.4 import形式の中でrequireを使う
第9章 シンプルなアプリケーションの作成
9.1 作成するアプリケーションの概要
9.2 引数
9.3 Windows向けのバッチ ファイル
9.4 openモジュール
9.5 サンプル プログラム
9.6 サンプル プログラム2
第10章 fsモジュールとpathモジュール
10.1 ファイル操作にまつわるモジュール
10.2 パスの解決と分解
10.3 fsモジュールの3つの系統
10.4 ファイルの存在確認
10.5 テキスト ファイルの読み込み
10.6 テキスト ファイルの書き込み
10.7 バイナリ ファイルの読み込み
10.8 バイナリ ファイルの書き込み
第11章 自作モジュール
11.1 module.exportsとrequire
11.2 読み込むモジュールのパスを確かめる
11.3 requireでのモジュールの検索
11.4 requireでのJSONファイルの読み込み
11.5 exportとimport
11.6 export default
第12章 ダウンロードとパース
12.1 ネットのファイルのダウンロード
12.2 HTMLファイルをパース
12.3 セレクター
12.4 DOMの操作
12.5 サンプル プログラム
12.6 単純なスクレイピングと複雑なスクレイピング
第13章 Puppeteerを利用したスクレイピング
13.1 Puppeteerとは
13.2 Puppeteerの導入
13.3 Puppeteerの起動
13.4 ブラウザーを操作して結果を取得
13.5 スクリーンショットを撮る
13.6 サンプル プログラム
第14章 Puppeteerを利用したフォーム操作
14.1 Puppeteerでブラウザーを表示する
14.2 Puppeteerでの待機
14.3 Pageを利用した自動操縦
14.4 Puppeteerでの自動操縦の問題
14.5 サンプル用のローカル サーバー
14.6 サンプル プログラム
第15章 サンプル用ローカル サーバー
15.1 Express
15.2 ローカル サーバーのプログラム
第16章 Puppeteerを利用した画像とPDFのダウンロード
16.1 画像のダウンロード
16.2 PDFのダウンロード
16.3 サンプル プログラム
あとがき
プログラムのバージョン情報
サンプル コード

はじめに

 『Node.js』は、JavaScriptの実行環境です。サーバーで利用したり、ローカルのCLI(Command Line Interface)環境で用いたりします。この『Node.js』を使い、Web上のデータを収集して、必要な情報を取り出す「Webスクレイピング」を行うための基礎知識を、この本ではまとめます。


 Webスクレイピングは、さまざまなプログラミング言語で行えます。そのため、JavaScript以外のプログラミング言語を選択することもできます。

 Webスクレイピングを『Node.js』(JavaScript)で行うメリットは、いくつかあります。その特徴を以下に挙げます。


 ・JavaScriptはWebページの操作に向いており、関数やライブラリー、周辺情報が豊富です。

 ・ネットワーク処理は待機が多いです。JavaScriptには、こうした処理を扱うための非同期の仕組みが組み込まれています。


 これらの特徴は、JavaScriptが、元々Webブラウザー用のプログラミング言語であることに起因しています。『Node.js』を使えば、ふだんWeb開発をしている人の知識を、そのまま応用できます。

 この本では、『Node.js』(JavaScript)でWebスクレイピングを行うために、以下の知識を紹介します。


 ・『Node.js』の開発環境の構築。

 ・「node」や「npm」コマンドの利用方法。

 ・JavaScriptの駆け足での基礎知識。

 ・コア モジュール、npmモジュール、自作モジュール。

 ・require、importの利用。

 ・『node-fetch』『jsdom』を利用したファイルのダウンロードやHTMLのパース。

 ・『Puppeteer』を利用したWebブラウザーの操作や情報の取得。


 これらの知識を学ぶことで、『Node.js』を利用してWebスクレイピングを行えるようになることを目指します。

サンプル コードについて

 本書には、サンプル コードのデータがあります。巻末のURLからダウンロードできます。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

第1章 前提知識と開発環境の構築

この章では、本書を読み進める上での前提知識と、開発環境の構築方法について学びます。『Node.js』の導入やトラブルの解消、『Visal Studio Code』の導入や簡単な使い方の説明を行います。

1.1 Node.jsとは

 『Node.js』は、JavaScriptの実行環境です。『Node.js』では「V8 JavaScript エンジン」を利用しています。このエンジンの開発元はGoogleで、『Google Chrome』などで利用されています。


図1.1: V8 JavaScript エンジン


 『Node.js』の最初の公開は2009年(v0.0.1)です。元々、サーバー向けに開発されたもので、非同期に処理を実行することが特徴でした。現在では、ローカルのJavaScript実行環境としてもよく利用されています。


 ・同期処理。

  ─待ち時間がある処理の終了を待って、次の処理を進める方式です。

  ─待っている間、処理が止まります。

  ─プログラムは順番に進むので単純です。

 ・非同期処理。

  ─待ち時間がある処理の終了を待たずに、次の処理を進める方式です。

  ─待っている間も処理が止まりません。

  ─プログラムは順番に進まないので、同期処理よりも複雑です。


 以下に、同期処理と非同期処理の概念図を示します。


図1.2: 同期処理


図1.3: 非同期処理


 『Node.js』の公式サイトや、ドキュメントのページは、以下のとおりです。

Node.js

 https://nodejs.org/ja/


ドキュメント | Node.js

 https://nodejs.org/ja/docs/

 『Node.js』は、さまざまなモジュールが充実しています。ファイル操作や通信といった数多くのコア モジュール(標準モジュール)を持ちます。コア モジュールは、特別な追加インストールなしで最初から使える機能です。

 ただし注意が必要です。コア モジュールは過去に何度か破壊的な変更が入っています。そのためサンプル コードを見るときなどは、利用している『Node.js』のバージョンとドキュメントの確認が必須となります。


 また、『Node.js』では、npm(Node Package Manager)というコマンドが利用できます。このコマンドを使うと、Web上にある同名のパッケージ公開先「www.npmjs.com」からパッケージ(モジュール)をダウンロードしてインストールできます。依存するパッケージも、自動でダウンロードしてインストールしてくれます。

 現在では非常に多くのパッケージが公開されており、自身のプロジェクトに利用可能です。以下は、NPMのサイトのURLです。

npm

 https://www.npmjs.com/

 外部のプログラムはモジュールとして読み込み可能です。自分でモジュールを作ることもできます。


図1.4: モジュールの利用


 モジュールの読み込みシステムは、元々「require」を使う方式でした。近年では、Web標準となった「import」方式も使えます。コア モジュールのドキュメントは、既に「import」方式に変わっています。「require」と「import」は、それぞれ長所と短所があり、現状併存しています。


 ・外部のプログラムの読み込み方法

  ─「require」を使う方式

  ─「import」を使う方式


 JavaScript自体の仕様については、MDN(『Mozilla Firefox』を作っているMozillaのサイト)を参考にするとよいです。詳しい仕様がまとまっています。

 各種の組み込み関数やオブジェクトの詳しいプロパティーやメソッドについて調べたいときは、MDNを利用するとよいです。たとえばGoogleなどの検索エンジンで「mdn array」と検索すれば、MDNのArray(配列)についてのページにたどり着けます。仕様を確かめるには、この方法がよいです。

 以下は、MDNのJavaScriptについてのページのURLです。

JavaScript | MDN

 https://developer.mozilla.org/ja/docs/Web/JavaScript

1.2 Node.jsのインストール

 『Node.js』は、公式サイトからインストーラーをダウンロードしてインストールできます。別途バージョン管理ツールを導入する方法もありますが、初めて使う場合は公式からインストールする方が無難です。

 ダウンロードしたあと、CLI環境で以下のコマンドのいずれかを実行してください。正しくインストールできていれば、バージョン番号が表示されます。

node --version

node -v

 また「npm」コマンドが利用可能になっているかも確認します。「npm」は「Node Package Manager」の略です。『Node.js』をインストールすると一緒にインストールされます。「npm」は『Node.js』とは別にバージョンがあります。

 CLI環境で以下のコマンドのいずれかを実行してください。正しくインストールできていれば、バージョン番号が表示されます。

npm --version

npm -v

 「npm」コマンドは、以下のことを行うツールです。


 ・プロジェクトを作成します。

 ・「npm」サイトに公開されているパッケージの、インストールや更新などを行います。

1.3 WindowsでPathが通っていないとき

 Windows で『Node.js』のインストール後に「node -v」が失敗する場合があります。その際は、環境変数の「Path」に『Node.js』をインストールしたディレクトリーのパスが追加されていない可能性があります。

 もし「node -v」が失敗する場合は、以下の手順で『Node.js』のパスを追加してください。


 1.「Win + S」で検索ダイアログを開きます。

 2.「システムの詳細」と検索して「システムのプロパティ」ダイアログを開きます。

 3.「環境設定」タブの「環境変数」ボタンを押して「環境変数」ダイアログを開きます。

 4.「システム環境変数」の「Path」を選択します。

 5.「編集」ボタンを押して「環境変数名の編集」ダイアログを開きます。

 6.「新規」ボタンを押して「Node.jsをインストールしたパス」(通常は「C:\Program Files\nodejs\」)を追加します。


 設定を行ったあと、全てのプロセスに設定を反映するにはWindowsを再起動します。アプリケーション単位で反映するには、そのアプリケーションを再起動します。

 Windows専用ではないプログラムをWindowsに導入するときには、こうした問題が発生することが多いです。他のプログラムを利用する際にも、覚えておいた方がよいです。

1.4 WindowsでNODE_PATHが設定されていないとき

 『Node.js』で「グローバル」にパッケージをインストールしたあと「require(~)」関数で読み込むときには、環境変数『NODE_PATH』の値を利用します(現在の推奨は、グローバルを使わずに、プロジェクトごとに「ローカル」インストールすることです)。


 Windowsで「NODE_PATH」が設定されているかは、CLI環境で、以下のコマンドを実行するとわかります。

echo %NODE_PATH%

 「C:\Users\<ユーザー名>\AppData\Roaming\npm\node_modules」のようなパスが出力されれば、正しく設定できています。

 パスが正しく設定されていない場合は、以下のコマンドで出力されるパスを、環境変数「NODE_PATH」に登録する必要があります。以下は「npm」で、グローバルのルートの場所を出力するコマンドです。

npm root -g

 こちらで表示されたパス(「C:\Users\<ユーザー名>\AppData\Roaming\npm\node_modules」のようなパス)を、以下の方法で追加します。


 1.「Win + S」で検索ダイアログを開きます。

 2.「システムの詳細」と検索して「システムのプロパティ」ダイアログを開きます。

 3.「環境設定」タブの「環境変数」ボタンを押して「環境変数」ダイアログを開きます。

 4.「システム環境変数」の「NODE_PATH」を選択します(なければ新規に作成します)。

 5.「編集」ボタンを押して「システム変数の編集」ダイアログを開きます。

 6.「変数値」にパスを入力して、「OK」ボタンを押します。

1.5 Visal Studio Codeのインストール

Visal Studio Codeとは

 『Visal Studio Code』は、プログラミング用のエディターです。『VSCode』と略されることも多いです。

 無料で利用でき、シンタックス ハイライトや、各種開発用の機能、多彩なプラグインによる拡張性を備えています。

 このエディターはMicrosoftが開発しており、『Electron』でできています。『Electron』は、『Node.js』に、『Googole Chrome』と同じWebレンダリング エンジンを統合した実行環境です。

 『Visal Studio Code』は近年非常に人気があり、Web開発の現場で非常によく利用されています。まだ利用していない場合は導入しておくとよいです。

Visal Studio Codeのインストール

 開発用のエディターとして、『Visal Studio Code』をインストールしましょう。以下のサイトから入手して、インストールを行います。

Visual Studio Code – コード エディター | Microsoft Azure

 https://azure.microsoft.com/ja-jp/products/visual-studio-code/

 『Visal Studio Code』のウィンドウに、開発しているプロジェクトの「ディレクトリー」をドロップして使います。ディレクトリーをドロップすると、そのディレクトリーをルートにして、ファイルなどを開くことができます。

 ディレクトリーを開くと、画面の左側にファイルとディレクトリーが表示されます。ファイルをクリックして開くと、拡張子の種類に合わせてハイライト表示されます。

設定の変更

 『Visal Studio Code』の各種設定を変更するには「Ctrl+,」のショートカットを使います。設定のリストが表示されます。

1.6 Visal Studio Codeの利用

Visal Studio Code内でプログラムを実行1

 『Visal Studio Code』内でプログラムを実行する方法を示します。「Ctrl+@」でターミナル タブ(CLI環境)を開きます。そこで「node .」(node 半角スペース ドット)コマンドを実行すれば、カレント ディレクトリーでプロジェクトを実行できます。

node .

Visal Studio Code内でプログラムを実行2

 『Visal Studio Code』内でプログラムを実行する方法は、他にもあります。『Visal Studio Code』のデバッグ機能を利用することです。この場合は、ブレークポイントを設定できます。

 「とりあえず実行したい」「とりあえず開発したい」という場合は、前述の1の方法でよいです。2の方法は、『Visal Studio Code』のデバッグ機能を使いたいとき用のものです。

 『Visal Studio Code』のデバッグ機能は、以下の方法で利用できます。


 1.ウィンドウ左の「Run and Debug」ボタン(三角に虫のアイコン)をクリックします。「Ctrl+Shift+D」のショートカットを使ってもかまいません。

 2.ウィンドウ左側の領域に「RUN AND DEBUG」パネルが表示されます。


 以降は、状況により処理が分岐します。


 A.「Run and Debug」ボタンを利用する


 1.パネルに「Run and Debug」ボタンが表示されるのでクリックします。

 2.「Select environment」のメニューが表示されますので「Node.js」を選びます。

 3.「DEBUG CONSOLE」がウィンドウ下に表示されます。


 B.「create a launch.json file」を利用する


 1.パネルに「create a launch.json file」ボタンが表示されるので、クリックします。

 2.「Select environment」のメニューが表示されますので、「Node.js」を選びます。

 3.「.vscode/launch.json」が作成されます。

 4.「DEBUG CONSOLE」がウィンドウ下に表示されます。


 C.「create a launch.json file」を既に選択したあと


 1.パネルに「Launch Program」ボタンが表示されるので、左横の「Start Debugging」ボタン(三角ボタン)をクリックします。あるいは「F5」を押します。あるいはメニューの「Run」>「Start Debugging」を押します。

 2.「DEBUG CONSOLE」がウィンドウ下に表示されます。


 D. 使用を始めたあとに設定を変更する


 「Select Environment」を再び出して選び直す場合は、以下のようにします。


 1.左柱の「Run & Debug」をクリックして表示します。

 2.「Run & Debug」ボタンを押して、すばやく上部の歯車アイコンを押します。

 3.「Select Environment」が出るので切り換えます。

試し読みはここまでです。
この続きは、製品版でお楽しみください。