44142


node.js のpuppeteer で、ヘッドレスchromeをコントロールして、かなり簡単にページのスクリーンショットなどがとれるのですが、  
まだまだ過渡期なのか、あまりサンプルがなくて困っています。

表題のとおりなのですが、  
リンク先のURLとして、画像が示されている場合に  
その画像ファイルをカレントディレクトリなどに取得する方法がわかりません。

例えば、下記ページの下記画像リンクなどです。  
ネコ - Wikipedia  
<https://ja.wikipedia.org/wiki/%E3%83%8D%E3%82%B3>  
<https://ja.wikipedia.org/wiki/%E3%83%8D%E3%82%B3#/media/File:Cat_with_goldfish.jpg>

この画像URLから、ファイル[Cat_with_goldfish.jpg]をpuppeteerで取得することはどのように行うのでしょうか？

英語がわからず苦労しているのですが、  
<https://github.com/checkly/puppeteer-examples>  
このあたりの中身をみても、画像ファイル取得、というのは、ないようなのです。

サンプルがありましたら、教えてください。  
あるいは、そういう場合はpuppeteerは使わずに、cheerio-httpcliを使うんだよ、  
というようなアドバイスでも助かります。

cheerio-httpcli の使い方はどうにかわかるのですが、  
puppeteerでもChromeを操作するのだからできるんじゃないのだろうかと思うのですが、  
サンプルがなくて不思議なところなのです。

よろしくおねがいします。


CC BY-SA 3.0
2018-02-27T15:34:30.407
42047
2018-09-07T14:29:11.827
2018-09-07T14:29:11.827
19110
21047
question
javascript puppeteer
JavaScriptスクレイピングとして puppeteer で画像やZipファイルなどをダウンロードしたい


下記のコードで、jpg/png/html(UTF-8)は、取得することができました。

こちらに載っていました。  
<https://github.com/GoogleChrome/puppeteer/issues/1937>

ただ、コメントアウトしている zipファイルはダウンロードできていません。

chromiumが自動的にダウンロードフォルダに保存するコンテンツだと判断して  
カレントフォルダではなくダウンロードフォルダに保存してしまいます。

このやり方とは別でも、ZIPファイルや、htmlファイルのSJISやEUCの場合にダウンロードできる方法があれば、引き続き教えてください。  
よろしくおねがいします。

[code]

    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();
    
    })();
    
[/code]


CC BY-SA 3.0
2018-02-28T16:22:09.100
42061
2018-03-01T03:25:07.133
2018-03-01T03:25:07.133
21047
21047
42047
answer

[code]

    const page = await browser.newPage();
    await page.goto('http://www.tohoho-web.com/soft');
    const client = await page.target().createCDPSession();
    await client.send('Page.setDownloadBehavior', { behavior: 'allow', downloadPath: process.cwd() });
    await page.click('a[href="wbord262.zip"]');
    
[/code]

downloadPath に保存したいフォルダ指定 (※この場合、カレントディレクトリ)

確認環境  
$ node -v  
v8.11.1  
"puppeteer": "^1.4.0"


CC BY-SA 4.0
2018-05-22T00:47:27.107
44142
2018-05-22T00:47:27.107
28602
42047
answer