PHP使用puppeteer抓取JS渲染后的页面内容
作者:RiverSoul
时间:2026-07-23
浏览:2
最近研究了一下怎么爬取那些Ja vaScript渲染后的网页内容,折腾了一圈,发现核心武器还是得靠Puppeteer。不过它是个Node库,想在PHP里用还得再套一层,这里用到了`spatie/browsershot`这个包。下面把整个流程和踩坑点都捋一遍。 ## 环境依赖 先看看环境要求,其实不算
最近研究了一下怎么爬取那些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这个环节很容易卡住,提前准备好离线包能省不少时间。工具选对了,后面就是几行代码的事。
本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
3dmax常见问题及解决办法:异常关闭和文件找回教程
2026-09-28 11:55
微软推出Project Zenith:面向Windows 11开发者的AI硬件加速方案
2026-09-08 18:15
打破流量垄断,让平台经济释放普惠红利
2026-09-08 18:07
Arm AGI CPU详解:136核Neoverse V3,3nm双芯粒架构与AI数据中心部署
2026-09-08 17:18
Windows安装Docker教程:启用WSL2并运行第一个容器验证
2026-09-04 09:26
上一篇:
基于PHP实现一个简单的http服务器
精品专题
更多
Mac软件
更多
WINDOWS
更多

































