ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 での QueryList の使用

ThinkPHP6 での QueryList の使用

WBOY
WBOYオリジナル
2023-06-20 09:15:341671ブラウズ

インターネット技術の継続的な発展に伴い、データ クローラーは人々が情報を入手する重要な方法の 1 つになりました。 PHP フレームワークでは、ThinkPHP6 は強力なデータ操作機能を提供するだけでなく、より便利にデータを取得できるようにする QueryList と呼ばれるデータ取得ライブラリも提供します。

QueryList は、ストリーミング チェーン操作に基づいた PHP データの収集および処理ライブラリであり、HTML、XML、JSON、TXT などのさまざまなタイプのテキストからデータを抽出できます。この記事では主に、ThinkPHP6 で QueryList を使用してデータを取得および処理する方法を紹介します。

1. QueryList のインストール

まず、ThinkPHP6 アプリケーションに QueryList をインストールする必要があります。 Composer を使用して、次のコマンドでインストールできます:

composer require jaeger/querylist

インストールが完了したら、次の内容を含む querylist.php 構成ファイルをアプリケーションの config ディレクトリに作成する必要があります:

<?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 を定義します。 。この例では、Web ページ内のすべてのタイトルとリンクを抽出する必要があります。

ルールを定義した後、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。