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://www.fushidao.cc/wangluobiancheng/3397.html
您可能感兴趣的文章
- 08-25PHP编程经典书籍推荐,有哪些值得一读的佳作?
- 07-12如何高效学习并掌握从入门到精通的PHP编程教程?PHP编程入门到精通
- 07-12PHP数据流编程如何实现高效处理?PHP数据流处理优化技巧
- 07-12PHP编程初学者疑问解答,入门教程交流心得分享,php入门教程
- 07-12PHP编程如何融入儿童摄影文案创作?儿童摄影文案怎么写
- 07-12php编程教程30秒为何这么短,能学会php编程吗?零基础如何快速入门php
- 07-12php007编程日记心得挑战,php007编程日记有哪些疑问困扰同好
- 07-12PHP编程语言中常用的加密方式有哪些?各自适用场景如何?PHP加密算法有哪些
- 07-12php7内存编程如何高效管理内存优化性能,避免内存泄漏?php7内存管理优化
- 07-12如何有效利用PHP编程技巧去除字符串中的重复字符?php去除字符串重复字符
阅读排行
- 1PHP编程经典书籍推荐,有哪些值得一读的佳作?
- 2如何高效学习并掌握从入门到精通的PHP编程教程?PHP编程入门到精通
- 3PHP数据流编程如何实现高效处理?PHP数据流处理优化技巧
- 4PHP编程初学者疑问解答,入门教程交流心得分享,php入门教程
- 5PHP编程如何融入儿童摄影文案创作?儿童摄影文案怎么写
- 6php编程教程30秒为何这么短,能学会php编程吗?零基础如何快速入门php
- 7php007编程日记心得挑战,php007编程日记有哪些疑问困扰同好
- 8PHP编程语言中常用的加密方式有哪些?各自适用场景如何?PHP加密算法有哪些
- 9php7内存编程如何高效管理内存优化性能,避免内存泄漏?php7内存管理优化
- 10如何有效利用PHP编程技巧去除字符串中的重复字符?php去除字符串重复字符
推荐教程
- 07-25PHP WindSearch实现站内搜索功能
- 07-25PHP建立MySQL与MySQLi持久化连接(长连接)区别
- 02-01PHP编程用什么软件?资深开发者为你揭秘最佳工具组合
- 07-25PHP调用FFmpeg实现视频切片
- 05-12php编程怎么收费,php开发费用多少钱
- 01-23重庆哪里能找到专业的PHP编程培训班?推荐哪家比较好?
- 11-23PHP 7安装使用体验之性能大提升,兼容性强,扩展支
- 01-23如何通过PHP编程实现从文本框输入并处理整数的完整代码示例?
- 02-20PHP7编程实战,PHP编程机器人设计,如何实现高效编程与智能自动化?
- 01-28php编程第3版pdf中,有哪些新特性或更新让我不得不重新学习?
