Maison  >  Article  >  cadre php  >  Utilisation de QueryList dans ThinkPHP6

Utilisation de QueryList dans ThinkPHP6

WBOY
WBOYoriginal
2023-06-20 09:15:341672parcourir

Avec le développement continu de la technologie Internet, les robots d'exploration de données sont devenus l'un des moyens importants permettant aux utilisateurs d'obtenir des informations. Dans le framework PHP, ThinkPHP6 fournit non seulement de puissantes fonctions de manipulation de données, mais nous fournit également une bibliothèque de saisie de données appelée QueryList pour nous aider à obtenir des données plus facilement.

QueryList est une bibliothèque de collecte et de traitement de données PHP basée sur des opérations de chaîne de streaming, qui peut extraire des données de différents types de texte tels que HTML, XML, JSON, TXT, etc. Cet article présentera principalement comment utiliser QueryList pour capturer et traiter des données dans ThinkPHP6.

1. Installez QueryList

Tout d'abord, nous devons installer QueryList dans notre application ThinkPHP6. Vous pouvez utiliser Composer pour installer via la commande suivante :

composer require jaeger/querylist

Une fois l'installation terminée, nous devons créer un fichier de configuration querylist.php dans le répertoire de configuration de l'application, avec le contenu suivant :

<?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',
    ],
];

Ce fichier de configuration est la configuration par défaut de QueryList, le fichier de configuration La signification et l'utilisation de chaque paramètre peuvent être consultées dans la documentation officielle de QueryList.

2. Utilisez QueryList pour la capture de données

QueryList fournit une série de méthodes d'opération en chaîne pour nous aider à obtenir et à traiter des données. Ces méthodes incluent une série d'opérations de données courantes telles que la recherche, le filtrage, l'extraction et la transformation.

Ce qui suit est un exemple simple, nous utiliserons QueryList pour récupérer les données de la page d'accueil de Baidu et afficher le titre et le lien.

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());

Dans l'extrait de code ci-dessus, nous utilisons d'abord la fonction file_get_contents fournie avec PHP pour obtenir le code source de la page d'accueil de Baidu, puis définissons un tableau de règles $rules pour représenter le type et l'emplacement des données que nous devons capturer. Dans cet exemple, nous devons extraire tous les titres et liens de la page Web.

Après avoir défini les règles, nous convertissons le texte HTML en un objet de requête, appliquons les règles à l'objet de requête et obtenons enfin les données via la méthode getData. Utilisez la méthode print_r pour afficher toutes les données obtenues. Nous pouvons voir que les résultats de sortie sont les suivants :

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
        )

)

Comme vous pouvez le voir, nous avons réussi à extraire le titre et le lien de la page. Grâce à des opérations en chaîne simples, nous pouvons compléter la capture et le traitement des données.

3. Utilisez QueryList pour le stockage des données

Après la capture et le traitement des données, nous devrons peut-être stocker les données obtenues dans la base de données pour une utilisation ultérieure. QueryList fournit une méthode pratique pour stocker des données dans la base de données. Voici un exemple simple où nous stockons des données dans une base de données 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 . '条数据';

Tout d'abord, nous définissons le tableau de règles précédent et la méthode pour obtenir les données. Dans cet exemple, nous utilisons la méthode get de QueryList pour obtenir les données de la page. Après avoir obtenu les données, nous instancions d'abord une classe d'opérations de base de données, puis utilisons la méthode insertAll pour insérer des données dans la base de données par lots.

Après avoir exécuté le code ci-dessus, nous pouvons voir les données nouvellement insérées dans la base de données MySQL.

En résumé, l'utilisation de QueryList dans ThinkPHP6 peut facilement terminer la capture et le traitement des données, et peut également facilement stocker les données capturées dans la base de données. La méthode d'opération en chaîne de QueryList est également très adaptée au traitement et à la conversion de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn