PHP---采集数据

最新做一个项目,需要采集大量的文章,考试使用PHP开发。

使用Thinkphp6+QueryList:

首先是安装:使用 composer 安装,查看电脑是否安装 composer 以及PHP版本:

image

目前最新的是 QueryList4 需要PHP大于8,我这里使用的是PHP7,需要安装 QueryList3:

文档:

https://querylist.cc/docs/guide/v3
https://querylist.1team.top/v4/guide/installation.html

安装方式:

composer require jaeger/querylist:~V3

检测是否安装成功:

image

查看安装成功:

image

 或者是:

image

解析文章:

<?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
        )

)

例如:我的采集的文章内容和标题没有单独,需要将其过滤:

image

image

这样就非常厉害了。

打完收工!

posted @ 2026-08-02 00:20  帅到要去报警  阅读(2)  评论(0)    收藏  举报