View on GitHub

Samuraishockdo_pages

github pages

PuPHPeteerで画像をダウンロードする書き方

rialto-php/puphpeteer についての記事です

PuPHPeteerとは、PHPからPuppeteerを操作できるパッケージなんです。
これを使って、PHPからPuppeteerを操作してスクレイピング、データの保存が出来たりします。
JSで生成されているページはPuppeteerでないとスクレイピング出来ないので、PHPのフレームワーク内でJSコンテンツのスクレイピングを行うときにとても助かっています。

ズバリこれがダウンロードで出来るコードだ!

というかまんま抜粋! How to download image?

use Nesk\Puphpeteer\Puppeteer;

$puppeteer = new Puppeteer;
$browser = $puppeteer->launch();

$page = $browser->newPage();
$s = $page->goto('https://pestphp.com/assets/img/webp/hero.webp');

$base64 = $s->buffer()->toString('base64');
file_put_contents('./example.webp', base64_decode($base64));

$browser->close();

要は

$s = $page->goto('https://pestphp.com/assets/img/webp/hero.webp');
$base64 = $s->buffer()->toString('base64');

の所で、画像にgotoして、base64してるところがアイデアですね。

感想

検索してみたら、Puppeteer自体で画像ダウンロードについての決定的な方法ってないみたいですね。
みなさんが、いろんな方法で試してる。
この方法だと、素直にfile_put_contents()で保存できるので便利です。
base64 ってこういう風にも使いどころがあるんだ!って勉強になりました。
ちなみに自分の最初のアイデアは、キャプチャ機能でやる方法だった。 これだと、画像の解像度によっては画像の周りに黒フチがつくんですよね・・。 このページで助かりました。

このページのコードを動作確認した環境・バージョン

HOME