Heim  >  Artikel  >  PHP-Framework  >  Verwenden von QueryList in ThinkPHP6

Verwenden von QueryList in ThinkPHP6

WBOY
WBOYOriginal
2023-06-20 09:15:341621Durchsuche

Mit der kontinuierlichen Weiterentwicklung der Internettechnologie sind Datencrawler zu einer der wichtigsten Möglichkeiten für Menschen geworden, an Informationen zu gelangen. Im PHP-Framework bietet ThinkPHP6 nicht nur leistungsstarke Datenbearbeitungsfunktionen, sondern stellt uns auch eine Datenerfassungsbibliothek namens QueryList zur Verfügung, die uns dabei hilft, Daten bequemer abzurufen.

QueryList ist eine PHP-Bibliothek zur Datenerfassung und -verarbeitung, die auf Streaming-Kettenoperationen basiert. Sie kann Daten aus verschiedenen Texttypen wie HTML, XML, JSON, TXT usw. extrahieren. In diesem Artikel wird hauptsächlich die Verwendung von QueryList zum Erfassen und Verarbeiten von Daten in ThinkPHP6 vorgestellt.

1. QueryList installieren

Zuerst müssen wir QueryList in unserer ThinkPHP6-Anwendung installieren. Sie können Composer zur Installation über den folgenden Befehl verwenden:

composer require jaeger/querylist

Nach Abschluss der Installation müssen wir im Konfigurationsverzeichnis der Anwendung eine Konfigurationsdatei querylist.php mit folgendem Inhalt erstellen:

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

Diese Konfigurationsdatei ist Die Standardkonfiguration von QueryList, die Konfigurationsdatei. Die Bedeutung und Verwendung jedes Parameters kann in der offiziellen Dokumentation von QueryList eingesehen werden.

2. Verwenden Sie QueryList zur Datenerfassung. QueryList bietet eine Reihe von Kettenoperationsmethoden, die uns beim Abrufen und Verarbeiten von Daten helfen. Diese Methoden umfassen eine Reihe gängiger Datenoperationen wie Suche, Filterung, Extraktion und Konvertierung.

Das Folgende ist ein einfaches Beispiel. Wir verwenden QueryList, um die Daten der Baidu-Homepage abzurufen und den Titel und den Link auszugeben.

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

Im obigen Codeausschnitt verwenden wir zunächst die mit PHP gelieferte Funktion file_get_contents, um den Quellcode der Baidu-Homepage abzurufen, und definieren dann ein Regelarray $rules, um den Typ und Speicherort der Daten darzustellen, die wir erfassen müssen. In diesem Beispiel müssen wir alle Titel und Links auf der Webseite extrahieren.

Nachdem wir die Regeln definiert haben, konvertieren wir den HTML-Text in ein Abfrageobjekt, wenden die Regeln auf das Abfrageobjekt an und erhalten schließlich die Daten über die Methode getData. Verwenden Sie die print_r-Methode, um alle erhaltenen Daten auszugeben. Wir können sehen, dass die Ausgabeergebnisse wie folgt lauten:

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
        )

)

Wie Sie sehen können, haben wir den Titel und den Link erfolgreich von der Seite extrahiert. Durch einfache Kettenoperationen können wir die Datenerfassung und -verarbeitung abschließen.

3. Verwenden Sie QueryList zur Datenspeicherung

Nach der Datenerfassung und -verarbeitung müssen wir die erhaltenen Daten möglicherweise zur späteren Verwendung in der Datenbank speichern. QueryList bietet eine praktische Methode zum Speichern von Daten in der Datenbank. Das Folgende ist ein einfaches Beispiel, bei dem wir Daten in einer MySQL-Datenbank speichern.

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 . '条数据';

Zuerst definieren wir das vorherige Regelarray und die Methode zum Abrufen der Daten. In diesem Beispiel verwenden wir die get-Methode von QueryList, um die Daten der Seite abzurufen. Nachdem wir die Daten erhalten haben, instanziieren wir zunächst eine Datenbankbetriebsklasse und verwenden dann die Methode insertAll, um Daten stapelweise in die Datenbank einzufügen.

Nachdem wir den obigen Code ausgeführt haben, können wir die neu eingefügten Daten in der MySQL-Datenbank sehen.

Zusammenfassend lässt sich sagen, dass die Verwendung von QueryList in ThinkPHP6 die Datenerfassung und -verarbeitung problemlos abschließen und die erfassten Daten auch problemlos in der Datenbank speichern kann. Die Kettenoperationsmethode von QueryList eignet sich auch sehr gut für die Datenverarbeitung und -konvertierung.

Das obige ist der detaillierte Inhalt vonVerwenden von QueryList in ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn