ps:我是在空白的服务器中测试部署的
前提 先安装好 nginx php composer
- 安装依赖
在这之前,要先启用php的proc_open函数,否则无法安装完整 - 安装nodejs
我刚开始直接yum install nodejs
安装下来的版本是没有自带 npm 所以直接卸载
我最终安装的node版本 : 16.19.1 npm 版本:8.19.3
参考文献:https://blog.csdn.net/yucaifu1989/article/details/127987671
- 安装 @nesk/puphpeteer
npm install @nesk/puphpeteer
这时估计会出现 Set “PUPPETEER_SKIP_DOWNLOAD” env variable to skip download 这个错误
不要慌,这是大概的意思是 Env 里面没有设置 PUPPETEER_SKIP_DOWNLOAD 这配置 需要跳过 自动安装 Chromium 浏览器 用以下代码
npm install @nesk/puphpeteer --unsafe-perm=true --allow-root --ignore-scripts
node node_modules/puppeteer/install.js
运行这个代码会自动下载对应系统对应版本的 chromium
安装 puppeteer Chromium 扩展
在 /www/wwwroot/项目/node_modules/puppeteer/.local-chromium/linux-版本号 下
npm install
下载 xvfb 包
yum install Xvfb -y
yum install xorg-x11-fonts* -y
参考文献:https://www.jianshu.com/p/69eb35a9d93c
-
检测PHP禁用函数 是否删除 proc_open exec putenv 三个函数
-
创建PHP文件,代码如下
<?php
require ('./vendor/autoload.php');
use QL\QueryList;
use QL\Ext\Chrome;
$ql = QueryList::getInstance();
// 注册插件,默认注册的方法名为: chrome
$ql->use(Chrome::class);
$ql->chrome(function ($page,$browser) {
$page->goto('url');
// 这里故意设置一个很长的延长时间,让你可以看到chrome浏览器的启动
sleep(3);
//输入关键词
$wd = '简庆旺博客';
$page->type("input[id='kw']",$wd);
sleep(1);
//点击搜索
$page->click("input[type='submit']");
//等待搜索结果
sleep(3);
//获取结果
$html = $page->content();
//用jquery选择器抽取结果
$rules = array(
'title'=>['#content_left h3 a','text'],//标题
'url'=>['#content_left h3 a','href'],//跳转网址
'description'=>['div .c-abstract','text'],//描述
);
$ql = QueryList::html($html);
$rt = $ql->rules($rules)->query()->getData();
//如果有需要,可以把$rt入库,以及做其他操作
sleep(10);
$browser->close();
// 返回值一定要是页面的HTML内容
return $html;
},[
'headless' => false, // 启动可视化Chrome浏览器,方便调试
'devtools' => false, // 打开浏览器的开发者工具
])->find('title')->text();
- 开始运行 PHP代码
- 应该会有报错 因为没有相对应的 .so 配置扩展包,
参考教程地址:https://blog.csdn.net/jnreul/article/details/109492548
https://chrunlee.cn/article/puppeteer-centos-error-so.html
http://www.360doc.com/content/22/1211/20/72809014_1059893703.shtml
- 第7步弄完之后。会出现以下截图的错误
'headless' => false, 改为 'headless' => true,
参考文献:https://www.jianshu.com/p/2c88eb7459a4
这些笔记是经历2天的不断的查阅文档以及不断的重装node环境
总结而来,原文章教程讲解的有点不详细,我在这里做个详细的笔记,如果有其他问题,评论或者私信我