PHP使用puppeteer抓取JS渲染后的页面内容

张开发
2026/4/9 14:46:39 15 分钟阅读

分享文章

PHP使用puppeteer抓取JS渲染后的页面内容
最近遇到一个问题需要爬取js渲染后的网页内容因此研究了下相关实现方式。主要借助puppeteer实现它是一个Node库要想在PHP中使用还借助了spatie/browsershot。环境依赖环境要求Node7.6.0PHP7.1PHP extensionphp_sockets, php_exifpuppeteerPuppeteer是一个Node库我是直接在php项目下使用npm安装这个库然后借助spatie/browsershot来调用它。读者也可以新建一个node项目安装这个库然后对外暴漏一个端口通过接口的方式传递url返回html内容的方式实现。1npm i puppeteer --save离线安装Chromium安装puppeteer时会下载Chromium因为众所周知的原因可能会下载不下来因此下面提供了离线下载的方式。跳过安装chromium如果已经运行上一步的命令并且正在下载Chromium了那可以直接CtrlC停止任务。如果还没运行就使用下面的命令安装。1npm i puppeteer --ignore-scripts获取需要下载的chromium版本号打开/node_modules/puppeteer/package.json搜索chromium_revision对应的版本号1234puppeteer: {chromium_revision:756035,firefox_revision:latest}下载对应版本的chromium用上面的版本号替换掉下方花括号里的字符比如我本地是win x64下载地址就是https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/756035/chrome-win.zip1234567891011121314mac版下载地址:https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/{chromium版本}/chrome-mac.zipwindows 64位版本下载地址:https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/{chromium版本}/chrome-win.zipwindows 32位版本下载地址:https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/{chromium版本}/chrome-win.zipLinux X86版本下载地址:https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux/{chromium版本}/chrome-linux.zipLinux X64版本下载地址:https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/{chromium版本}/chrome-linux.zip解压将下载下来的chromium安装包解压到puppeteer中的.local_chromium/win64-{chromium版本号}/目录下。以我的为例就是/node_modules/puppeteer/.local_chromium/win64-756035/chrome-win/。搞定~spatie/browsershotbrowsershot 是一个composer包以前还用过的spatie/laravel-permission都是同一团队制作的1composer require spatie/browsershot使用其实困难的部分就是找到合适的工具以及安装工具真正使用反而很简单。下面列了一个很简单的例子更多方法还是去看官方文档吧。1234567891011121314?phpuseSpatie\Browsershot\Browsershot;classSpider{/*** 获取html内容* param $url* return string*/publicstaticfunctiongetBodyHtml($url){returnBrowsershot::url($url)-bodyHtml();}}复制讲解总结到此这篇关于PHP使用puppeteer抓取JS渲染后的页面内容的文章就介绍到这了

更多文章