要實(shí)現(xiàn)php插件QueryList V3采集器的功能,首先就是要下載phpQuery.php和QueryList.php,我們使用的是tp3.2,所以把這兩個(gè)文件放到如下圖所示的位置:
然后在控制器上,使用vendor('Caiji.phpQuery');vendor('Caiji.QueryList');引入這兩個(gè)文件,然后使用命名空間use QL\QueryList;引入QueryList類,如下圖所示:
然后使用QueryList::方法名,即可調(diào)用QueryList類的方法,如下圖所示,我們來采集一個(gè)網(wǎng)址:
$html是我們要采集的一個(gè)網(wǎng)址,我們打開這個(gè)頁面,如下圖:
然后查看這個(gè)頁面的源代碼,如下所示:
上面的源代碼劃紅圈的位置,我們需要采集的是網(wǎng)頁的URL,標(biāo)題,圖片三個(gè)參數(shù),這樣QueryList采集器的規(guī)則如下:
$rules = array("url"=>array('.all ul li a','href'),
'title'=>array('.all ul li a .news-wrap p','text'),
'picture'=>array('.img-wrap img','data-echo'));
這個(gè)就是在這個(gè)頁面里,獲取url,title,picture這三個(gè)參數(shù)的匹配到符合條件的數(shù)組,至于這個(gè)規(guī)則為何這樣寫,可以自行查看QueryList V3的開發(fā)文檔,這里不再贅述,然后使用
$data_list = QueryList::Query($html,$rules)->data;執(zhí)行采集程序,就能獲取到如下數(shù)組:
....
這樣就可以對(duì)數(shù)組進(jìn)行處理了,首先我們注意到這個(gè)圖片的路徑是遠(yuǎn)程的絕對(duì)地址,如果直接存到數(shù)據(jù)庫表中,隨時(shí)可能因?yàn)槟撤N原因打開,所以就需要把圖片保存到服務(wù)器上,所以需要運(yùn)用到以下方法:
$file_url 是遠(yuǎn)程的圖片地址,如上面數(shù)組的picture的路徑,$save_to是服務(wù)器上要保存的文件地址,如 $save_to = 'Uploads/caiji/123.jpg';
這樣通過$this->dlfile($file_url, $save_to)調(diào)用這個(gè)方法后即可保存圖片,這樣圖片的地址就能轉(zhuǎn)換成服務(wù)器上的相對(duì)地址或根目錄地址了。
以上是對(duì)QueryList V3的實(shí)例運(yùn)用介紹,其實(shí)還有很多比較實(shí)用的技巧沒講,例如內(nèi)容過濾,獲取內(nèi)容亂碼如何解決等。如果有時(shí)間下次再講一下把采集數(shù)據(jù)處理,先采集列表頁面,再通過列表的鏈接采集到文章頁面,再把它保存到數(shù)據(jù)庫中的處理過程。
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來自http://www.sdlwjx666.com/news/6581.html