puppeteerで指定のディレクトリ にファイルをダウンロードする方法

puppeteerで指定のディレクトリ にファイルをダウンロードする方法
     

ブラウザ自動操作ソフトのpuppeteer(パペティア)でファイルダウンロードをしたかったのですが、

ちょっとつまづいてしまったのでメモ。

Seleniumとかと比べて少し情報が少なかった印象なので、同様の自称で困っている人の助けになれば。

書かないこと

以下は省略します。

  • puppeteerの導入
  • その他基本操作などの説明

ファイルダウンロードするための準備

自動操作ブラウザに対してダウンロードの設定を行う。

const path = __dirname + "/downloads";
await page._client.send('Page.setDownloadBehavior', {
  behavior : 'allow',
  downloadPath: path
});

つまづいたこと

自動操作でファイルをダウンロードする際、ダウンロード自体はしようとするが、「失敗しました。」との事でファイルがダウンロードされない。

もちろん通常のブラウザからのダウンロードは正常に行われる。

原因

パスの区切り文字が正しくなかった。

スラッシュ「/」で区切っていたが、エンマーク(バックスラッシュ)「¥¥」で区切らないといけなかった。

※エスケープの為、「¥」は2つ重ねる。

修正後

というわけで1行目のダウンロードパスを以下のように修正して、ダウンロードを確認。

const path = __dirname + "¥¥downloads";
await page._client.send('Page.setDownloadBehavior', {
    behavior : 'allow',
    downloadPath: path
});

その他注意

Mac環境ではダウンロードパスは相対パスで良いが、Windows環境では絶対パスでないといけない模様。

__dirnameで絶対パスを生成しているのはその為。

IT系の雑記カテゴリの最新記事