>PHP 프레임워크 >ThinkPHP >ThinkPHP6에서 QueryList 사용하기

ThinkPHP6에서 QueryList 사용하기

WBOY
WBOY원래의
2023-06-20 09:15:341714검색

인터넷 기술의 지속적인 발전으로 데이터 크롤러는 사람들이 정보를 얻는 중요한 방법 중 하나가 되었습니다. PHP 프레임워크에서 ThinkPHP6은 강력한 데이터 조작 기능을 제공할 뿐만 아니라 QueryList라는 데이터 수집 라이브러리를 제공하여 보다 편리하게 데이터를 얻을 수 있도록 도와줍니다.

QueryList는 스트리밍 체인 작업을 기반으로 하는 PHP 데이터 수집 및 처리 라이브러리로, HTML, XML, JSON, TXT 등 다양한 유형의 텍스트에서 데이터를 추출할 수 있습니다. 이 글에서는 주로 ThinkPHP6에서 QueryList를 사용하여 데이터를 캡처하고 처리하는 방법을 소개합니다.

1. QueryList 설치

먼저 ThinkPHP6 애플리케이션에 QueryList를 설치해야 합니다. Composer를 사용하여 다음 명령을 통해 설치할 수 있습니다.

composer require jaeger/querylist

설치가 완료된 후 애플리케이션의 config 디렉터리에 다음 내용으로 querylist.php 구성 파일을 생성해야 합니다.

<?php

return [
    'default' => [
        'type' => 'php',
        'host' => '',
        'login' => '',
        'password' => '',
        'database' => '',
        'prefix' => '',
        'charset' => 'utf8',
        'deploy' => 0,
        'rw_separate' => false,
        'master_num' => 1,
        'slave_no' => '',
        'fields_fix'=>"fl_",
        'debug' => true,
        'logfile' => 'QueryList.log',
    ],
];

이 구성 파일은 다음과 같습니다. QueryList의 기본 구성, 구성 파일 각 매개변수의 의미와 사용법은 QueryList 공식 문서에서 확인할 수 있습니다.

2. 데이터 캡처를 위해 QueryList 사용

QueryList는 데이터를 획득하고 처리하는 데 도움이 되는 일련의 체인 작업 방법을 제공합니다. 이러한 방법에는 검색, 필터링, 추출 및 변환과 같은 일련의 일반적인 데이터 작업이 포함됩니다.

다음은 간단한 예입니다. QueryList를 사용하여 Baidu 홈페이지의 데이터를 가져오고 제목과 링크를 출력하겠습니다.

use QLQueryList;

$html = file_get_contents('https://www.baidu.com');
$rules = [
    'title' => ['title', 'text'],
    'link' => ['a', 'href']
];
$data = QueryList::html($html)->rules($rules)->query()->getData();
print_r($data->all());

위 코드 조각에서는 먼저 PHP와 함께 제공되는 file_get_contents 함수를 사용하여 Baidu 홈페이지의 소스 코드를 가져온 다음 캡처해야 하는 데이터의 유형과 위치를 나타내는 규칙 배열 $rules를 정의합니다. 이 예에서는 웹 페이지의 모든 제목과 링크를 추출해야 합니다.

규칙을 정의한 후 HTML 텍스트를 쿼리 개체로 변환하고 규칙을 쿼리 개체에 적용한 다음 마지막으로 getData 메서드를 통해 데이터를 가져옵니다. print_r 메소드를 사용하여 얻은 모든 데이터를 출력하면 다음과 같은 출력 결과를 볼 수 있습니다.

Array
(
    [0] => Array
        (
            [title] => 百度一下,你就知道
            [link] => https://www.baidu.com/s?tn=site888_2_pg&ch=12&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=15&rsv_sug1=12&rsv_sug7=100&sug=0&prefixsug=0&rsp=0&inputT=2890&rsv_sug4=3114
        )

    [1] => Array
        (
            [title] => 新闻
            [link] => https://www.baidu.com/s?cl=2&tn=site888_2_pg&ch=11&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=19&rsv_sug1=17&rsv_sug7=101&sug=0&prefixsug=news&rsp=0&inputT=2890&rsv_sug4=4085
        )

    [2] => Array
        (
            [title] => hao123_上网从这里开始
            [link] => https://www.baidu.com/s?cl=3&tn=site888_2_pg&ch=6&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=25&rsv_sug1=23&rsv_sug7=100&sug=0&prefixsug=hao123&rsp=0&inputT=2890&rsv_sug4=5329
        )

    [3] => Array
        (
            [title] => 地图
            [link] => https://www.baidu.com/s?cl=4&tn=site888_2_pg&ch=1&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=31&rsv_sug1=28&rsv_sug7=100&sug=0&prefixsug=map&rsp=0&inputT=2890&rsv_sug4=6166
        )

    [4] => Array
        (
            [title] => 视频
            [link] => https://www.baidu.com/s?cl=5&tn=site888_2_pg&ch=8&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=37&rsv_sug1=34&rsv_sug7=100&sug=0&prefixsug=video&rsp=0&inputT=2890&rsv_sug4=7407
        )

    [5] => Array
        (
            [title] => 贴吧
            [link] => https://www.baidu.com/s?cl=6&tn=site888_2_pg&ch=7&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=43&rsv_sug1=39&rsv_sug7=100&sug=0&prefixsug=tf&rsp=0&inputT=2890&rsv_sug4=8649
        )

    [6] => Array
        (
            [title] => 学术
            [link] => https://www.baidu.com/s?cl=7&tn=site888_2_pg&ch=9&usm=0&rsv_pq=c41e6776001f4675&rsv_t=18fbRjBF2q5prQVFnv46BpnHtLGviB4KLud38LaBjYeT%2BRvj1zHqh7ksOBo&rqlang=cn&rsv_dl=0&rs=1&inputT=2696&rsv_sug3=49&rsv_sug1=45&rsv_sug7=100&sug=0&prefixsug=xueshu&rsp=0&inputT=2890&rsv_sug4=9890
        )

    [7] => Array
        (
            [title] => 登录
            [link] => https://passport.baidu.com/v3/?reg&redirect=http%3A%2F%2Fwww.baidu.com%2F&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F
        )

)

보시다시피 페이지의 제목과 링크가 성공적으로 추출되었습니다. 간단한 체인 운영을 통해 데이터 캡처 및 처리를 완료할 수 있습니다.

3. 데이터 저장을 위해 QueryList 사용

데이터 캡처 및 처리 후에는 후속 사용을 위해 획득한 데이터를 데이터베이스에 저장해야 할 수도 있습니다. QueryList는 데이터를 데이터베이스에 저장하는 편리한 방법을 제공합니다. 다음은 MySQL 데이터베이스에 데이터를 저장하는 간단한 예입니다.

use QLQueryList;

$rules = [
    'title' => ['title', 'text'],
    'link' => ['a', 'href']
];
$data = QueryList::get('https://www.baidu.com')->rules($rules)->query()->getData();
$db = new     hinkDb;
$affected = $db::table('test')->insertAll($data->all());
echo '添加成功' . $affected . '条数据';

먼저 이전 규칙 배열과 데이터를 가져오는 방법을 정의합니다. 이 예에서는 QueryList의 get 메소드를 사용하여 페이지의 데이터를 가져옵니다. 데이터를 얻은 후 먼저 데이터베이스 작업 클래스를 인스턴스화한 다음 insertAll 메서드를 사용하여 데이터를 데이터베이스에 일괄 삽입합니다.

위 코드를 실행하면 MySQL 데이터베이스에 새로 삽입된 데이터를 확인할 수 있습니다.

요약하자면, ThinkPHP6에서 QueryList를 사용하면 데이터 캡처 및 처리를 쉽게 완료할 수 있으며, 캡처된 데이터를 데이터베이스에 쉽게 저장할 수도 있습니다. QueryList의 체인 연산 방식은 데이터 처리 및 변환에도 매우 적합합니다.

위 내용은 ThinkPHP6에서 QueryList 사용하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.