Heim > Artikel > PHP-Framework > Verwenden von QueryList in ThinkPHP6
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.
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.
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
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!