インターネット技術の継続的な発展に伴い、データ クローラーは人々が情報を入手する重要な方法の 1 つになりました。 PHP フレームワークでは、ThinkPHP6 は強力なデータ操作機能を提供するだけでなく、より便利にデータを取得できるようにする QueryList と呼ばれるデータ取得ライブラリも提供します。
QueryList は、ストリーミング チェーン操作に基づいた PHP データの収集および処理ライブラリであり、HTML、XML、JSON、TXT などのさまざまなタイプのテキストからデータを抽出できます。この記事では主に、ThinkPHP6 で 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 の公式ドキュメントで確認できます。
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 ) )
ご覧のとおり、ページ内のタイトルとリンクが抽出できました。単純な連鎖操作を通じて、データのキャプチャと処理を完了できます。
データのキャプチャと処理の後、取得したデータを後で使用するためにデータベースに保存する必要がある場合があります。 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 サイトの他の関連記事を参照してください。