PHP使用puppeteer抓取JS渲染后的页面内容
最近遇到一个问题,需要爬取js渲染后的网页内容,因此研究了下相关实现方式。主要借助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内容的方式实现。
npm i puppeteer --save
离线安装Chromium
安装puppeteer
时会下载Chromium
,因为众所周知的原因可能会下载不下来,因此下面提供了离线下载的方式。
跳过安装chromium
如果已经运行上一步的命令并且正在下载Chromium
了,那可以直接Ctrl+C
停止任务。如果还没运行,就使用下面的命令安装。
npm i puppeteer --ignore-scripts
获取需要下载的chromium版本号
打开/node_modules/puppeteer/package.json
搜索chromium_revision
对应的版本号
"puppeteer": { "chromium_revision": "756035", "firefox_revision": "latest" }
下载对应版本的chromium
用上面的版本号替换掉下方花括号里的字符,比如我本地是
win x64
,下载地址就是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
解压
将下载下来的chromium
安装包解压到puppeteer
中的.local_chromium/win64-{chromium版本号}/
目录下。以我的为例就是/node_modules/puppeteer/.local_chromium/win64-756035/chrome-win/
。搞定~
spatie/browsershot
browsershot 是一个composer
包,以前还用过的spatie/laravel-permission,都是同一团队制作的
composer require spatie/browsershot
使用
其实困难的部分就是找到合适的工具以及安装工具,真正使用反而很简单。下面列了一个很简单的例子,更多方法还是去看官方文档吧。
bodyHtml(); } }
总结
到此这篇关于PHP使用puppeteer抓取JS渲染后的页面内容的文章就介绍到这了,更多相关PHP获取JS渲染后的页面内容内容请搜索科站长以前的文章或继续浏览下面的相关文章希望大家以后多多支持科站长!
栏 目:PHP编程
下一篇:PHP foreach引用变量导致的问题及其解决方案
本文标题:PHP使用puppeteer抓取JS渲染后的页面内容
本文地址:https://fushidao.cc/wangluobiancheng/3397.html
您可能感兴趣的文章
- 02-10windows服务器iis+php获得错误信息的配置方法
- 02-09通过PHP接入DeepSeek API的两种方法
- 02-07PHP调用DeepSeek API的完整指南
- 02-06PHP foreach引用变量导致的问题及其解决方案
- 02-02PHP使用puppeteer抓取JS渲染后的页面内容
- 01-17PHP SM4加密的实现
- 01-17PHP实现用户认证与权限管理的实现
- 01-10ThinkPHP中跨域请求设置的几种方式
- 01-09ThinkPHP中的接口的安全防护措施小结
- 01-03在ThinkPHP中实现文件上传的实用示例


阅读排行
推荐教程
- 11-23PHP 7安装使用体验之性能大提升,兼容性强,扩展支
- 11-22PHP自定义函数判断是否为Get、Post及Ajax提交的方法
- 11-23php中 == 和 === 的区别和应用说明
- 11-23隐藏PHP版本与PHP基本安全设置
- 11-23PHP+MYSQL 读写分离简单实战
- 11-22详解PHP防止直接访问.php 文件的实现方法
- 11-22PHP编程求最大公约数与最小公倍数的方法示例
- 11-22PHP实现上传多图即时显示与即时删除的方法
- 11-23PHP保留两位小数的几种方法
- 11-23nginx+php 打开php错误提示的方法