最近遇到一个问题,需要爬取js渲染后的网页内容,因此研究了下相关实现方式。主要借助实现,它是一个Node库,要想在PHP中使用,还借助了。
环境依赖
环境要求Node>=7.6.0PHP>=7.1PHP extensionphp_sockets, php_exif
puppeteer
Puppeteer是一个库,我是直接在php项目下使用npm安装这个库,然后借助来调用它。读者也可以新建一个node项目安装这个库,然后对外暴漏一个端口通过接口的方式传递url返回html内容的方式实现。离线安装Chromium
安装时会下载,因为众所周知的原因可能会下载不下来,因此下面提供了离线下载的方式。
跳过安装chromium
如果已经运行上一步的命令并且正在下载了,那可以直接停止任务。如果还没运行,就使用下面的命令安装。- npm i puppeteer --ignore-scripts
复制代码 获取需要下载的chromium版本号
打开- /node_modules/puppeteer/package.json
复制代码 搜索对应的版本号- "puppeteer": {
- "chromium_revision": "756035",
- "firefox_revision": "latest"
- }
复制代码 下载对应版本的chromium
- 用上面的版本号替换掉下方花括号里的字符,比如我本地是[code]win x64
复制代码 ,下载地址就是- https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/756035/chrome-win.zip
复制代码 [/code]- 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
复制代码 解压
将下载下来的安装包解压到中的- .local_chromium/win64-{chromium版本号}/
复制代码 目录下。以我的为例就是- /node_modules/puppeteer/.local_chromium/win64-756035/chrome-win/
复制代码 。搞定~
spatie/browsershot
browsershot 是一个包,以前还用过的spatie/laravel-permission,都是同一团队制作的- composer require spatie/browsershot
复制代码 使用
其实困难的部分就是找到合适的工具以及安装工具,真正使用反而很简单。下面列了一个很简单的例子,更多方法还是去看官方文档吧。- <?php
- use Spatie\Browsershot\Browsershot;
- class Spider
- {
- /**
- * 获取html内容
- * @param $url
- * @return string
- */
- public static function getBodyHtml($url)
- {
- return Browsershot::url($url)->bodyHtml();
- }
- }
复制代码 总结
到此这篇关于PHP使用puppeteer抓取JS渲染后的页面内容的文章就介绍到这了,更多相关PHP获取JS渲染后的页面内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:https://www.jb51.net/program/335042cer.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|