PHP运用QueryList + node+puppeteer 实现正则读取数据

9 篇文章 0 订阅
1 篇文章 0 订阅

ps:我是在空白的服务器中测试部署的

前提 先安装好 nginx php composer

  1. 安装依赖
    在这之前,要先启用php的proc_open函数,否则无法安装完整
  2. 安装nodejs
    我刚开始直接 yum install nodejs
    安装下来的版本是没有自带 npm 所以直接卸载
    我最终安装的node版本 : 16.19.1 npm 版本:8.19.3

参考文献:https://blog.csdn.net/yucaifu1989/article/details/127987671

  1. 安装 @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

  1. 检测PHP禁用函数 是否删除 proc_open exec putenv 三个函数

  2. 创建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();
  1. 开始运行 PHP代码
  2. 应该会有报错 因为没有相对应的 .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

  1. 第7步弄完之后。会出现以下截图的错误

在这里插入图片描述
在这里插入图片描述

'headless' => false,  	改为   'headless' => true,

参考文献:https://www.jianshu.com/p/2c88eb7459a4

这些笔记是经历2天的不断的查阅文档以及不断的重装node环境
总结而来,原文章教程讲解的有点不详细,我在这里做个详细的笔记,如果有其他问题,评论或者私信我

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方员外不是大强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值