+++ date = "2020-07-04JST" tags = ["curl"] title = "コマンドラインからjavascriptでレンダリングされたHTMLソースを取得する方法" slug = "curl" +++ ### phantomjs `curl`ではjavascriptを有効にしたブラウザと同じHTMLソースの取得が難しいことがあります。このような場合、`phantomjs`を使用すると便利です。 ```sh $ npm i -g phantomjs phantom ``` 公式サイトにてバイナリも配布されてるので、`node`でのインストールが依存関係などで失敗する場合、こちらをダウンロード、解凍して実行権限を与えると良いでしょう。 https://phantomjs.org/download.html ```sh $ curl -sLO https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 $ aunpack phantomjs-2.1.1-linux-x86_64.tar.bz2 $ cd phantomjs-2.1.1-linux-x86_64/bin/ $ chmod +x phantomjs $ ./phantomjs --version ``` ```js:set.js var system = require('system'); var page = require('webpage').create();argument var url = system.args[1]; page.open(url, function () { console.log(page.content); phantom.exit(); }); ``` ```sh $ phantomjs set.js https://google.com ``` ### domcurl [domcurl](https://github.com/PaulKinlan/domcurl)というツールがあり、webscrapingに非常に便利です。`phantomjs`などで要件を満たせない場合におすすめです。 > domcurlはPuppeteerを使う小さなNodeJSアプリケーションで、 npm i domcurlコマンドを発行することでインストールできます。 curlコマンドのように、簡単なdomcurl [url]を発行してリソースを取得し、JSをページ上で実行することができます。 > > https://paul.kinlan.me/domcurl/ ```sh $ npm i domcurl $ ./node_modules/domcurl/index.js --url https://example.com ```