質問: node.js のpuppeteer で、ヘッドレスchromeをコントロールして、かなり簡単にページのスクリーンショットなどがとれるのですが、 まだまだ過渡期なのか、あまりサンプルがなくて困っています。 表題のとおりなのですが、 リンク先のURLとして、画像が示されている場合に その画像ファイルをカレントディレクトリなどに取得する方法がわかりません。 例えば、下記ページの下記画像リンクなどです。 ネコ - Wikipedia この画像URLから、ファイル[Cat_with_goldfish.jpg]をpuppeteerで取得することはどのように行うのでしょうか? 英語がわからず苦労しているのですが、 このあたりの中身をみても、画像ファイル取得、というのは、ないようなのです。 サンプルがありましたら、教えてください。 あるいは、そういう場合はpuppeteerは使わずに、cheerio-httpcliを使うんだよ、 というようなアドバイスでも助かります。 cheerio-httpcli の使い方はどうにかわかるのですが、 puppeteerでもChromeを操作するのだからできるんじゃないのだろうかと思うのですが、 サンプルがなくて不思議なところなのです。 よろしくおねがいします。
回答: 下記のコードで、jpg/png/html(UTF-8)は、取得することができました。 こちらに載っていました。 ただ、コメントアウトしている zipファイルはダウンロードできていません。 chromiumが自動的にダウンロードフォルダに保存するコンテンツだと判断して カレントフォルダではなくダウンロードフォルダに保存してしまいます。 このやり方とは別でも、ZIPファイルや、htmlファイルのSJISやEUCの場合にダウンロードできる方法があれば、引き続き教えてください。 よろしくおねがいします。 ``` const puppeteer = require('puppeteer'); const fs = require('fs'); (async () => { // const browser = await puppeteer.launch(); const browser = await puppeteer.launch({ headless: false }); const page = await browser.newPage(); // const downloadUrl = // 'https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg'; // const donwloadFilePath = './cat.jpg'; // const downloadUrl = // 'https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/200px-PNG_transparency_demonstration_1.png'; // const donwloadFilePath = './png.png'; const downloadUrl = 'http://www.tohoho-web.com/www.htm'; const donwloadFilePath = './www.htm'; // const downloadUrl = // 'http://www.tohoho-web.com/soft/wcnt315.zip'; // const donwloadFilePath = './wcnt315.zip'; var viewSource = await page.goto(downloadUrl); fs.writeFile(donwloadFilePath, await viewSource.buffer(), function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); await browser.close(); })(); ```