• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    PHP使用puppeteer抓取JS渲染后的页面内容

    发布者: 浪子 | 发布时间: 2025-6-14 13:12| 查看数: 67| 评论数: 0|帖子模式

    最近遇到一个问题,需要爬取js渲染后的网页内容,因此研究了下相关实现方式。主要借助
    1. puppeteer
    复制代码
    实现,它是一个Node库,要想在PHP中使用,还借助了
    1. spatie/browsershot
    复制代码


    环境依赖

    环境要求Node>=7.6.0PHP>=7.1PHP extensionphp_sockets, php_exif
    puppeteer

    Puppeteer是一个
    1. Node
    复制代码
    库,我是直接在php项目下使用npm安装这个库,然后借助
    1. spatie/browsershot
    复制代码
    来调用它。读者也可以新建一个node项目安装这个库,然后对外暴漏一个端口通过接口的方式传递url返回html内容的方式实现。
    1. npm i puppeteer --save
    复制代码
    离线安装Chromium

    安装
    1. puppeteer
    复制代码
    时会下载
    1. Chromium
    复制代码
    ,因为众所周知的原因可能会下载不下来,因此下面提供了离线下载的方式。

    跳过安装chromium

    如果已经运行上一步的命令并且正在下载
    1. Chromium
    复制代码
    了,那可以直接
    1. Ctrl+C
    复制代码
    停止任务。如果还没运行,就使用下面的命令安装。
    1. npm i puppeteer --ignore-scripts
    复制代码
    获取需要下载的chromium版本号

    打开
    1. /node_modules/puppeteer/package.json
    复制代码
    搜索
    1. chromium_revision
    复制代码
    对应的版本号
    1. "puppeteer": {
    2.     "chromium_revision": "756035",
    3.     "firefox_revision": "latest"
    4. }
    复制代码
    下载对应版本的chromium
    1. 用上面的版本号替换掉下方花括号里的字符,比如我本地是[code]win x64
    复制代码
    ,下载地址就是
    1. https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/756035/chrome-win.zip
    复制代码
    [/code]
    1. mac版下载地址:
    2. https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/{chromium版本}/chrome-mac.zip

    3. windows 64位版本下载地址:
    4. https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win_x64/{chromium版本}/chrome-win.zip

    5. windows 32位版本下载地址:
    6. https://commondatastorage.googleapis.com/chromium-browser-snapshots/Win/{chromium版本}/chrome-win.zip

    7. Linux X86版本下载地址:
    8. https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux/{chromium版本}/chrome-linux.zip

    9. Linux X64版本下载地址:
    10. https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/{chromium版本}/chrome-linux.zip
    复制代码
    解压

    将下载下来的
    1. chromium
    复制代码
    安装包解压到
    1. puppeteer
    复制代码
    中的
    1. .local_chromium/win64-{chromium版本号}/
    复制代码
    目录下。以我的为例就是
    1. /node_modules/puppeteer/.local_chromium/win64-756035/chrome-win/
    复制代码
    。搞定~

    spatie/browsershot

    browsershot 是一个
    1. composer
    复制代码
    包,以前还用过的spatie/laravel-permission,都是同一团队制作的
    1. composer require spatie/browsershot
    复制代码
    使用

    其实困难的部分就是找到合适的工具以及安装工具,真正使用反而很简单。下面列了一个很简单的例子,更多方法还是去看官方文档吧。
    1. <?php
    2. use Spatie\Browsershot\Browsershot;
    3. class Spider
    4. {
    5.     /**
    6.      * 获取html内容
    7.      * @param $url
    8.      * @return string
    9.      */
    10.     public static function getBodyHtml($url)
    11.     {
    12.         return Browsershot::url($url)->bodyHtml();
    13.     }
    14. }
    复制代码
    总结

    到此这篇关于PHP使用puppeteer抓取JS渲染后的页面内容的文章就介绍到这了,更多相关PHP获取JS渲染后的页面内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/program/335042cer.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表