PHP---采集数据
最新做一个项目,需要采集大量的文章,考试使用PHP开发。
使用Thinkphp6+QueryList:
首先是安装:使用 composer 安装,查看电脑是否安装 composer 以及PHP版本:

目前最新的是 QueryList4 需要PHP大于8,我这里使用的是PHP7,需要安装 QueryList3:
文档:
https://querylist.cc/docs/guide/v3 https://querylist.1team.top/v4/guide/installation.html
安装方式:
composer require jaeger/querylist:~V3
检测是否安装成功:

查看安装成功:

或者是:

解析文章:
<?php require 'vendor/autoload.php'; use QL\QueryList; // 文档:https://querylist.1team.top/v3/guide/scraper-single.html // 待DOM解析的页面地址 $url = 'https://www.cnbeta.com/articles/tech/779841.htm'; // DOM解析规则 $rules = [ // 文章标题 'title' => ['.title>h1','text'], // 发布日期 'date' => ['.meta>span:eq(0)','text'], // 文章内容 'content' => ['#artibody','html'] ]; $data = QueryList::Query($url,$rules)->data; print_r($data);
解析列表:
<?php require 'vendor/autoload.php'; use QL\QueryList; // 文档 https://querylist.1team.top/v3/guide/scraper-list.html // 待DOM解析的页面地址 $url = 'https://www.cnbeta.com/'; // DOM解析规则 $rules = [ // 文章标题 'title' => ['a:eq(0)','text'], // 文章链接地址 'link' => ['a:eq(0)','href'], // 文章缩略图 'img' => ['img:eq(0)','src'], // 文章简介 'summary' => ['p:eq(0)','text'] ]; // 切片选择器 $range = '.items-area>.item'; $data = QueryList::Query($url,$rules,$range)->data; print_r($data);
内容过滤:
https://querylist.1team.top/v3/guide/content-filiter.html
//去掉p标签,但保留p标签的内容 $data = QueryList::Query($html,array( 'txt' => array('#demo','html','p') ))->data; print_r($data); /** 结果: Array ( [0] => Array ( [txt] => xxx <span class="tt">yyy</span> <span>zzz</span> nnn ) )
例如:我的采集的文章内容和标题没有单独,需要将其过滤:


这样就非常厉害了。
打完收工!

浙公网安备 33010602011771号