はじめてのPuppetter
さて先日買ったPuppeteer入門 スクレイピング+Web操作自動処理プログラミングだが、最初のプログラムをプログラムを動かすまでの手順も...。P.95に
Puppeteerに付属のscreenshot.jsがあります。
ってあるけど、そんなもんついてねーし(笑。少なくとも自分がインストールした1.9.0には無い(キッパリ。この本、最初のプログラムを実行できるようになるまでが長い。どういう層をターゲットにしてるのかわからないけど、1本目は「Hello, world」並にサクッと実行できた方がいいんじゃないのかね。とりあえず自分が試した最小手順を書いておく。
まずNode.jsのインストール。これはこの本の手順でOKだろう。インストール結果の確認を兼ねてnodeとrpmのversionを表示させてみる。
C:\workspace>node --version v8.12.0 C:\workspace>npm --version 6.4.1
次はPuppeteerを動かすプログラムを格納するプロジェクト(=ファルダ)の作成。ここでは C:\workspace\pupp とする。作成したらそこをカレントにする。
C:\workspace>mkdir pupp C:\workspace>cd pupp
そしてプロジェクトをnpm initで初期化。コマンドプロンプトが表示されるまで[Enter]を入力していくと、デフォルトのpackeage.jsonを作ってくれる。
C:\workspace\pupp>npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (pupp) version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to C:\workspace\pupp\package.json: { "name": "pupp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this OK? (yes)
そしてこの状態でPuppeteerをインストール。
C:\workspace\pupp>npm install puppeteer > puppeteer@1.9.0 install C:\workspace\pupp\node_modules\puppeteer > node install.js Downloading Chromium r594312 - 131.6 Mb [====================] 99% 0.0s Chromium downloaded to C:\workspace\pupp\node_modules\puppeteer\.local-chromium\win64-594312 npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN pupp@1.0.0 No description npm WARN pupp@1.0.0 No repository field. + puppeteer@1.9.0 added 42 packages from 22 contributors and audited 50 packages in 43.844s found 0 vulnerabilities
デフォルトで作成されたpackage.jsonにdependenciesが追加されたことがわかる。
C:\workspace\pupp>type package.json { "name": "pupp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "puppeteer": "^1.9.0" } }
ココ重要。この本ではここら辺が非常にわかりずらい、というか経験者じゃないと読み解けないのでは?
そしてプログラムを作る。ファイル名はindex.js。なぜなら↑の"main"でデフォルトで設定されているから。それに合わせる。内容は本書のP.95掲載のscreenshot.jsと同じにしよう。
const puppeteer = require('puppeteer'); (async () => { const TARGET_URL = 'https://yahoo.co.jp'; const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(TARGET_URL); await page.screenshot({path: 'example.png'}); await browser.close(); })();
ここまででプロジェクトは以下のようになっている。
C:\workspace\pupp>dir 2018/10/21 19:29 <DIR> . 2018/10/21 19:29 <DIR> .. 2018/10/21 19:29 316 index.js 2018/10/21 19:28 <DIR> node_modules 2018/10/21 19:28 11,404 package-lock.json 2018/10/21 19:28 251 package.json
では実行。
C:\workspace\pupp>node index.js
プロジェクトにexample.pngが追加された。
C:\workspace\pupp>dir 2018/10/21 19:31 <DIR> . 2018/10/21 19:31 <DIR> .. 2018/10/21 19:31 105,473 example.png 2018/10/21 19:31 306 index.js 2018/10/21 19:28 <DIR> node_modules 2018/10/21 19:28 11,404 package-lock.json 2018/10/21 19:28 251 package.json
内容はこんな感じ。
以上。
とにかく最初の1本を実行するまでが長い本。VS CodeとかESLintは本質的な話じゃないから、付録にでもしたほうがもうちょっと見通しが良くなったと思う。そういうところからも「自分の知ってることを書きたかっただけの本」という匂いがするんだよね。