Rumah  >  Artikel  >  rangka kerja php  >  Menggunakan QueryList dalam ThinkPHP6

Menggunakan QueryList dalam ThinkPHP6

WBOY
WBOYasal
2023-06-20 09:15:341621semak imbas

Dengan perkembangan teknologi Internet yang berterusan, perangkak data telah menjadi salah satu cara penting untuk orang ramai mendapatkan maklumat. Dalam rangka kerja PHP, ThinkPHP6 bukan sahaja menyediakan fungsi manipulasi data yang berkuasa, tetapi juga menyediakan kami perpustakaan merebut data yang dipanggil QueryList untuk membantu kami mendapatkan data dengan lebih mudah.

QueryList ialah perpustakaan pengumpulan dan pemprosesan data PHP berdasarkan operasi rantaian penstriman Ia boleh mengekstrak data daripada pelbagai jenis teks seperti HTML, XML, JSON dan TXT. Artikel ini terutamanya akan memperkenalkan cara menggunakan QueryList untuk menangkap dan memproses data dalam ThinkPHP6.

1. Pasang QueryList

Mula-mula, kami perlu memasang QueryList dalam aplikasi ThinkPHP6 kami. Anda boleh menggunakan Composer untuk memasang melalui arahan berikut:

composer require jaeger/querylist

Selepas pemasangan selesai, kami perlu mencipta fail konfigurasi querylist.php dalam direktori konfigurasi aplikasi, dengan kandungan berikut:

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

Fail konfigurasi ini Ia adalah konfigurasi lalai QueryList Maksud dan penggunaan setiap parameter dalam fail konfigurasi boleh dilihat dalam dokumentasi rasmi QueryList.

2. Gunakan QueryList untuk menangkap data

QueryList menyediakan satu siri kaedah operasi rantaian untuk membantu kami mendapatkan dan memproses data Kaedah ini termasuk carian, penapisan, pengekstrakan dan transformasi, dsb. A operasi data biasa.

Berikut ialah contoh mudah, kami akan menggunakan QueryList untuk mengambil data halaman utama Baidu dan mengeluarkan tajuk dan pautan.

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

Dalam coretan kod di atas, kami mula-mula menggunakan fungsi file_get_contents yang disertakan dengan PHP untuk mendapatkan kod sumber halaman utama Baidu, dan kemudian mentakrifkan tatasusunan peraturan $rules untuk mewakili jenis dan lokasi data yang kami perlu merangkak. Dalam contoh ini, kita perlu mengekstrak semua tajuk dan pautan dalam halaman web.

Selepas mentakrifkan peraturan, kami menukar teks HTML kepada objek pertanyaan, menggunakan peraturan pada objek pertanyaan, dan akhirnya mendapatkan data melalui kaedah getData. Gunakan kaedah print_r untuk mengeluarkan semua data yang diperoleh Kita dapat melihat bahawa hasil output adalah seperti berikut:

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
        )

)

Seperti yang anda lihat, kami telah berjaya mengekstrak tajuk dan pautan dari halaman. Melalui operasi rantaian yang mudah, kami boleh melengkapkan penangkapan dan pemprosesan data.

3. Gunakan QueryList untuk penyimpanan data

Selepas penangkapan dan pemprosesan data, kami mungkin perlu menyimpan data yang diperoleh ke dalam pangkalan data untuk kegunaan seterusnya. QueryList menyediakan kaedah yang mudah untuk menyimpan data ke dalam pangkalan data Berikut ialah contoh mudah di mana kami menyimpan data ke dalam pangkalan data 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 . '条数据';

Pertama, kami mentakrifkan tatasusunan peraturan sebelumnya dan kaedah untuk mendapatkan data. Dalam contoh ini, kami menggunakan kaedah get QueryList untuk mendapatkan data halaman. Selepas mendapatkan data, kami mula-mula membuat instantiate kelas operasi pangkalan data, dan kemudian menggunakan kaedah insertAll untuk memasukkan data secara berkumpulan ke dalam pangkalan data.

Selepas melaksanakan kod di atas, kita boleh melihat data yang baru dimasukkan dalam pangkalan data MySQL.

Ringkasnya, menggunakan QueryList dalam ThinkPHP6 boleh melengkapkan penangkapan dan pemprosesan data dengan mudah, dan ia juga boleh menyimpan data yang ditangkap dalam pangkalan data dengan mudah. Kaedah operasi rantaian QueryList juga sangat sesuai untuk pemprosesan dan penukaran data.

Atas ialah kandungan terperinci Menggunakan QueryList dalam ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn