使用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 服务器上一直无法返回内容,原因还不知道