使用php简单调取puppeteer 浏览器

首先安装 node 和 puppeteer 

安装完成之后进行传值 

对应的js 代码是 

首页得安装yargs 模块 安装方法,在当前项目下 

npm install yargs --save ,我在安装过程中提示没有package.json,我解决方案是 创建一个package.json

在 package.json 中写入 {} 空的json  即可

 

"use strict";
const yargs = require("yargs");
var argv = yargs
    .options({
        "t": {
            alias: "text",
            demandOption: true,
            default: "",
            describe: "Source text.",
            type: "string"
        }
    })
    .argv;
var name =argv.t; //获取传递进来的参数

var urls =name;
const puppeteer = require("puppeteer");
(async ()=>{
    try{
        // 创建一个浏览器实例 Browser 对象
        let browser = await puppeteer.launch({
            // 是否不显示浏览器, 为true则不显示
            "args": ["--no-sandbox", "--disable-setuid-sandbox"]
        });
        // 通过浏览器实例 Browser 对象创建页面 Page 对象
        let page = await browser.newPage();
        // 设置浏览器信息
        const UA = "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1";
        await Promise.all([
            page.setUserAgent(UA),
            // 允许运行js
            page.setJavaScriptEnabled(true),
            // 设置页面视口的大小
            page.setViewport({width: 1100, height: 1080}),
        ]);
        // 地址
        let chapter_list_url =urls;
        await page.goto(chapter_list_url);
        let content= await page.content();
        console.log(content);
        // 使用css选择器的方式
        await browser.close();
        return content;
        //console.log(content);
    }catch(err){
        console.log(err)
    }
})();

下面是对应的php 代码 

$dir ="C:/node/node.exe C:/puppeteer/cctv.js -t $name";
exec($dir,$a,$b);
$html = implode("",$a);

把解析出来的$html 进行对应正则匹配, 

注意 我用 exec()函数在linux 服务器上一直无法返回内容,原因还不知道