php querylist query,thinkphp5使用QueryList实现采集功能
thinkphp5使用QueryList實(shí)現(xiàn)采集功能
龍行????PHP????2019-5-10????1631????0評(píng)論
QueryList是基于phpQuery的
1.下載`QueryList.php`和`phpQuery.php`這兩個(gè)文件。
2.在`extend`下新建`QL`目錄。
3.將下載好的`QueryList.php`和`phpQuery.php`這兩個(gè)文件復(fù)制到`extend/QL`目錄。
4.在QueryList.php頭部加入
在需要使用的控制器中加入
use QL\QueryList;
下面給出一個(gè)示例代碼:
//需要采集的目標(biāo)頁面
$page = 'http://cms.querylist.cc/news/566.html';
//采集規(guī)則
$reg = array(
//采集文章標(biāo)題
'title' => array('h1','text'),
//采集文章發(fā)布日期,這里用到了QueryList的過濾功能,過濾掉span標(biāo)簽和a標(biāo)簽
'date' => array('.pt_info','text','-span -a',function($content){
//用回調(diào)函數(shù)進(jìn)一步過濾出日期
$arr = explode(' ',$content);
return $arr[0];
}),
//采集文章正文內(nèi)容,利用過濾功能去掉文章中的超鏈接,但保留超鏈接的文字,并去掉版權(quán)、JS代碼等無用信息
'content' => array('.post_content','html','a -.content_copyright -script',function($content){
//利用回調(diào)函數(shù)下載文章中的圖片并替換圖片路徑為本地路徑
//使用本例請(qǐng)確保當(dāng)前目錄下有image文件夾,并有寫入權(quán)限
//由于QueryList是基于phpQuery的,所以可以隨時(shí)隨地使用phpQuery,當(dāng)然在這里也可以使用正則或者其它方式達(dá)到同樣的目的
$doc=\phpQuery::newDocumentHTML($content);
$imgs = pq($doc)->find('img');
foreach ($imgs as $img) {
$src = 'http://cms.querylist.cc'.pq($img)->attr('src');
$localSrc = md5($src).'.jpg';
$stream = file_get_contents($src);
file_put_contents($localSrc,$stream);
pq($img)->attr('src',$localSrc);
}
return $doc->htmlOuter();
})
);
$rang = '.content';
$ql = QueryList::Query($page,$reg,$rang);
$data = $ql->getData();
//打印結(jié)果
print_r($data);
注意:在使用phpQuery類時(shí)需要在前面加上\,因?yàn)閜hpQuery.php中沒有使用命名空間,因?yàn)槭褂妹臻g后,QueryList.php無法使用phpQuery類。
評(píng)論一下
贊助站長
贊助站長X
版權(quán)申明:此文如未標(biāo)注轉(zhuǎn)載均為本站原創(chuàng),自由轉(zhuǎn)載請(qǐng)表明出處《龍行博客》。
本文網(wǎng)址:https://www.liaotaoo.cn/216.html
總結(jié)
以上是生活随笔為你收集整理的php querylist query,thinkphp5使用QueryList实现采集功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术收藏
- 下一篇: 【Automation License