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