40人参与 • 2025-02-13 • Php
最近遇到一个问题,需要爬取js渲染后的网页内容,因此研究了下相关实现方式。主要借助puppeteer
实现,它是一个node库,要想在php中使用,还借助了spatie/browsershot
。
环境 | 要求 |
---|---|
node | >=7.6.0 |
php | >=7.1 |
php extension | php_sockets, php_exif |
puppeteer是一个node
库,我是直接在php项目下使用npm安装这个库,然后借助spatie/browsershot
来调用它。读者也可以新建一个node项目安装这个库,然后对外暴漏一个端口通过接口的方式传递url返回html内容的方式实现。
npm i puppeteer --save
安装puppeteer
时会下载chromium
,因为众所周知的原因可能会下载不下来,因此下面提供了离线下载的方式。
如果已经运行上一步的命令并且正在下载chromium
了,那可以直接ctrl+c
停止任务。如果还没运行,就使用下面的命令安装。
npm i puppeteer --ignore-scripts
打开/node_modules/puppeteer/package.json
搜索chromium_revision
对应的版本号
"puppeteer": { "chromium_revision": "756035", "firefox_revision": "latest" }
用上面的版本号替换掉下方花括号里的字符,比如我本地是
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/
。搞定~
browsershot 是一个composer
包,以前还用过的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渲染后的页面内容内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论