2024-04-23 13:21:26 +00:00
|
|
|
+++
|
2024-08-11 13:03:20 +00:00
|
|
|
date = "2020-07-04"
|
2024-04-23 13:21:26 +00:00
|
|
|
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
|
|
|
|
```
|