使用 PHP 的无头浏览器 chrome-php
我想要截取指定网站的屏幕截图。
我想要获取适用于智能手机的页面。
我想在Laravel中使用。
请看参考。
以下是一个选项的中文释义:
Qiita是一个在线社区,该链接提供了有关如何在PHP中使用Chrome浏览器的文档。同时,该GitHub链接是关于一个名为chrome-php的项目,它提供了一个用于控制Chrome浏览器的PHP API。
安装
composer require chrome-php/chrome
为了防止乱码问题,在CentOS中安装日语。
sudo yum install ipa-gothic-fonts ipa-pgothic-fonts
Code 代码 mǎ)
use HeadlessChromium\BrowserFactory;
//略
$browserFactory = new BrowserFactory();
//ブラウザ表示サイズを指定
$browserFactory->setOptions([
'windowSize' => [375, 900],
'noSandbox' => true//cron で動くように
]);
$browser = $browserFactory->createBrowser();
try {
// 新しいページを作成し、指定のURLへ移動する
$page = $browser->createPage();
//スマホ要UAをセット
$page->setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
$page->navigate('https://yahoo.co.jp')->waitForNavigation();
//javascript実行の結果を待つ
sleep(5);
// スクリーンショットを撮る
$page->screenshot()->saveToFile(public_path("/tmp/screen_shot".time().".png"));
} finally {
// headless chromeの終了
$browser->close();
}
好吧。
準備考試
只要用Python就可以了嘛
因为很少使用,所以不喜欢代码变得一团糟。
希望只使用php来完成。
为什么你想要截屏呢?
原本是希望使用Vue3编写的代码来生成图表,还希望通过cron计划任务来运行。
Puppeteer怎么样?
我尝试了一下,但是遇到了错误,所以选择了这个。
沙盒出现了错误
[2022-10-14 14:26:02] local.ERROR: Chrome process stopped before startup completed. Additional info: [1014/142602.129443:ERROR:zygote_host_impl_linux.cc(90)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180. {"exception":"[object] (RuntimeException(code: 0): Chrome process stopped before startup completed. Additional info: [1014/142602.129443:ERROR:zygote_host_impl_linux.cc(90)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180. at /var/www/html/twikon.club/vendor/chrome-php/chrome/src/Browser/BrowserProcess.php:410)
[stacktrace]
当我在cron中运行时遇到了上述错误。
//ブラウザ表示サイズを指定
$browserFactory->setOptions([
'windowSize' => [375, 900],
'noSandbox' => true//cron で動くように
]);
如果是这样,那就可以了。