记录PHP+linux动态爬取网站内容操作
本文介绍了在PHP环境下使用QueryList结合Puppeteer进行网页抓取的配置方法。环境要求包括PHP 7.4(关闭putenv函数)、OpenCloudOS系统、Node 16.15.1和谷歌浏览器。安装步骤包括:通过Composer安装QueryList及其Puppeteer扩展,使用Yarn安装Node依赖,以及安装指定版本的谷歌浏览器。文中提供了示例代码,展示如何通过Puppete
·
1.环境
- php 7.4 php 关闭putenv函数
- opencloudos 系统
- node 16.15.1
- 谷歌浏览器
2.进入项目跟目录
2.1 composer安装 querylist https://querylist.cc/v4/guide/quick-look.html
composer require jaeger/querylist
2.2 composer安装 querylist-puppeteer https://querylist.cc/v4/guide/Puppeteer.html
composer require jaeger/querylist-puppeteer
2.3 安装Node依赖(与composer一样在项目根目录下执行)
2.31 可以使用宝塔的node.js 版本管理工具安装nodejs版本
# 安装yarn
npm install -g yarn
# 设置阿里镜像
npm config set registry https://mirrors.cloud.tencent.com/npm/
# 安装Node依赖
yarn add @nesk/puphpeteer
2.4 安装谷歌浏览器
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
yum install google-chrome-stable-124.0.6367.118-1.x86_64.rpm
2.5 2.5 使用示例
use QL\Ext\Chrome;
use QL\QueryList;
$url="https://www.neobund.com/detail/3996";
$ql = QueryList::getInstance();
// 注册插件,默认注册的方法名为: chrome
$ql->use(Chrome::class);
$html = $ql->chrome(function ($page,$browser) use($url) {
$page->setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36');
// 设置cookie
$page->goto($url);
// 等待元素出现
$page->waitFor('//*[@id="__layout"]/div/div[2]/div[2]/div[3]/div');
// 滚动到页面底部
$page->evaluate('window.scrollTo(0, 1000)');
// 等待一些操作,如加载内容 等待2秒
$page->waitFor(2000);
//找到元素并判断它是否存在
$cl = $page->querySelectorXPath('//*[@id="ship-tp"]');
if(!empty($cl)){
$page->click('#ship-tp');//点击元素
}
// 获取页面HTML内容
$html = $page->content();
// 关闭浏览器
$browser->close();
// 返回值一定要是页面的HTML内容
return $html;
//,['args'=>['--no-sandbox']] linux 环境驱动浏览器需要
},['args'=>['--no-sandbox']])->find('.tab-content')->html();
print_r($html);
大概就这样,不明白的可以去看官方教程:https://querylist.1team.top/v4/guide/integration.html
更多推荐
所有评论(0)