在使用PHP抓取JS生成的前端代码时,有比较多的工具,比如PhantomJS无头浏览器、基于PhantomJS的JavaScript测试框架CasperJS、Simple HTML DOM Parser等等,但是这些基础浏览器有个问题是没有后续人员更新维护,导致最新的JS脚本没法很好的渲染,导致网页不能正常的展示,这里使用Headless Chrome往往能很好解决这个问题
1、更换安装源
在使用yum更新的时候,总是提示更新失败,提示使用其他镜像“Trying other mirror.”,这时需要更新下安装源,可以参考这篇文章《如何更换安装源?这篇教程可以帮你》,这里我用的是阿里云的镜像,具体命令如下
-- 查看linux是哪个centos版本 cat /etc/centos-release -- 备份安装源目录 \cp -rp /etc/yum.repos.d/ /etc/yum.repos.d_back -- 下载阿里云安装源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo -- 清理之前安装源缓存,并生成新的阿里云安装源缓存 yum clean all yum makecache
2、更新所有软件到最新版本
sudo yum update sudo yum upgrade
3、安装谷歌chrome浏览器
这里要注意,centos7系列安装最新版本的谷歌chrome浏览器会报错,提示”Error: Package: ….Requires: libc.so.6(GLIBC_2.25)(64bit)”;所以应安装稍微低版本的,centos7对chrome125及以上版本不支持,这里安装较新的google-chrome-stable-124稳定版版本。
更多谷歌老版本可以参考这个地址:http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/
-- 下载 wget http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/google-chrome-stable-124.0.6367.118-1.x86_64.rpm -- 安装 sudo yum install google-chrome-stable-124.0.6367.118-1.x86_64.rpm -- 查看版本 google-chrome --version chrome://version //windows系统 -- 测试效果,使用无头模式,访问网页并把内容输入到当前或者指定目录下的output.html google-chrome --no-sandbox --headless --disable-gpu --dump-dom http://www.baidu.com > output.html google-chrome --no-sandbox --headless --disable-gpu --dump-dom http://www.baidu.com > /www/wwwroot/testjs/output.html
备注(略过):如果是更高版本的centos系统,支持谷歌125及以上版本安装,可以参考如下方法
最新版谷歌浏览器可以参考这个网址,拖到网页最底部,左下角选择“其他平台”下载本地安装包,上传到服务器对应目录,然后执行本地安装命令:https://www.google.cn/intl/zh-CN/chrome/
-- 下载 wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm -- 本地安装命令 yum localinstall google-chrome-stable_current_x86_64.rpm
4、安装中文字体,解决浏览器显示中文内容乱码问题
yum groupinstall "X Window System" -y yum -y groupinstall chinese-support yum -y groupinstall Fonts
使用Chrome Headless模式测试效果,访问百度,并输出为pdf文件,并保存到tmp根目录
-- 使用无头模式将网页内容输出为pdf google-chrome --no-sandbox --headless --disable-gpu --print-to-pdf=/home/wwwroot/testjs/test.pdf http://www.baidu.com
保存为pdf成功