商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > PHP使用puppeteer抓取JS渲染后的页面内容

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

  发布于2026-07-23 阅读(0)

扫一扫,手机访问

最近研究了一下怎么爬取那些Ja vaScript渲染后的网页内容,折腾了一圈,发现核心武器还是得靠Puppeteer。不过它是个Node库,想在PHP里用还得再套一层,这里用到了`spatie/browsershot`这个包。下面把整个流程和踩坑点都捋一遍。 ## 环境依赖 先看看环境要求,其实不算高,但有几个硬性门槛: | 环境 | 要求 | | --- | --- | | Node | >= 7.6.0 | | PHP | >= 7.1 | | PHP extension | php_sockets, php_exif | ## puppeteer Puppeteer是个Node库,可以直接在PHP项目下用npm安装,然后通过`spatie/browsershot`来调用。当然,也可以单独新建一个Node项目来装这个库,然后对外暴露一个接口,通过传URL返回HTML内容,但那样多了一层网络开销,不如直接本地调用方便。 ```bash npm i puppeteer --sa ve ``` ## 离线安装Chromium 安装Puppeteer的时候会自动下载Chromium,但众所周知的原因,这个下载过程常常卡死。所以下面给出一套离线安装的方案,省得反复重试。 ### 跳过安装chromium 如果已经运行了上面的命令并且正在下载Chromium,可以直接`Ctrl+C`停掉。如果还没运行,就用下面这个命令来安装,跳过自动下载: ```bash npm i puppeteer --ignore-scripts ``` ### 获取需要下载的chromium版本号 打开`/node_modules/puppeteer/package.json`,搜索`chromium_revision`,后面那个数字就是版本号。比如: ```json "puppeteer": { "chromium_revision": "756035", "firefox_revision": "latest" } ``` ### 下载对应版本的chromium 用上面拿到的版本号替换掉下方花括号里的字符。比如本地是Windows 64位,下载地址就是`https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/756035/chrome-win.zip`。 - Mac版:`https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/{chromium版本}/chrome-mac.zip` - Windows 64位:`https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/{chromium版本}/chrome-win.zip` - Windows 32位:`https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/{chromium版本}/chrome-win.zip` - Linux X86:`https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux/{chromium版本}/chrome-linux.zip` - Linux X64:`https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/{chromium版本}/chrome-linux.zip` ### 解压 把下载好的压缩包解压到Puppeteer目录下的`.local_chromium/win64-{版本号}/`里。比如本地路径是`/node_modules/puppeteer/.local_chromium/win64-756035/chrome-win/`。搞定,Chromium就可以正常使用了。 ## spatie/browsershot browsershot是一个Composer包,之前也用过这个团队做的`spatie/lara vel-permission`,质量一直不错。 ```bash composer require spatie/browsershot ``` ## 使用 其实最难的部分就是装环境和配置工具,真到了使用环节反而简单。下面放一个最基础的例子,更多高级用法还是直接看官方文档比较靠谱。 ```php bodyHtml(); } } ``` ## 总结 从安装到使用,整个链条不算复杂,但离线安装Chromium这个环节很容易卡住,提前准备好离线包能省不少时间。工具选对了,后面就是几行代码的事。
本文转载于:https://www.jb51.net/program/335042cer.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注