ベストアンサー後ですが自分でも使うかもなのでgoogle製ライブラリpupetteerを使った例を書いておきます。
前提: nodeインストール済み(node -v
とnpm -v
でそれぞれバージョンが表示される)
確認はnodeバージョン12.2.0です。
適当なディレクトリで、
bash
1$ npm init -y
2$ npm install puppeteer
以下コードをrender.js
という名前で保存
JavaScript
1const puppeteer = require('puppeteer');
2(async () => {
3 const browser = await puppeteer.launch();
4 const page = await browser.newPage();
5 await page.setContent(require('fs').readFileSync(0).toString());
6 const bodyHandle = await page.$('body');
7 const text = await bodyHandle.evaluate(body => body.innerText);
8 console.log(text);
9 await browser.close();
10})();
ローカルのhtmlに使うときにローカルサーバー立ち上げるのも面倒なのでpage.goto(URL)
ではなく標準入力をpage.setContent(HTML文字列)
に渡すようにしました。
なので使い方:
Bash
1$ echo '<h1>hello</h1><script>document.write("world")</script>' | node render
2hello
3world
URLに対して(example.comにはscript無いが…)はcurlなどと組み合わせて、
bash
1$ curl -s http://example.com/ | node render
2Example Domain
3
4This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.
5
6More information...
ローカルにあるファイル(例示のsample.html)には、
bash
1$ cat sample.html | node render
23
3