首頁 php框架 ThinkPHP Thinkphp5與QueryList實作擷取頁面功能(爬蟲)

Thinkphp5與QueryList實作擷取頁面功能(爬蟲)

Jan 28, 2020 pm 01:57 PM
querylist thinkphp5

Thinkphp5與QueryList實作擷取頁面功能(爬蟲)

QueryList 是什麼?

#QueryList是一套用於內容收集的PHP工具,它使用更現代化的開發思想,語法簡潔、優雅,可擴展性強。相較於傳統的使用晦澀的正規表示式來做採集,QueryList使用了更強大而優雅的CSS選擇器來做採集,大大降低了PHP做採集的門檻,同時也讓採集程式碼易讀易維護,讓你從此告別晦澀難懂且不易維護的正規表示式。

 

QueryList 提供的一整套內容採集解決方案

● DOM內容選擇:CSS選擇器

● HTTP客戶端:GuzzleHTTP

● 內容過濾:CSS選擇器

● 解決亂碼:內建多套亂碼解決方案

● 額外功能:豐富的擴充插件

 

前提

專案主要使用thinkphp5框架,主要用在`QueryList.php`和`phpQuery.php`這兩個檔案。我們可以切換到專案目錄,extend里新建QL,然後在QL目錄執行composer指令安裝QueryList:

composer require jaeger/querylist
登入後複製

然後在需要使用的控制器中加入use QL\QueryList; 接下來就在控制器裡編寫程式碼了,以下是一個實例

//需要采集的目标页面
$page = 'http://cms.querylist.cc/news/566.html';
//采集规则
$reg = array(
   //采集文章标题
   'title' => array('h1','text'),
   //采集文章发布日期,这里用到了QueryList的过滤功能,过滤掉span标签和a标签
   'date' => array('.pt_info','text','-span -a',function($content){
       //用回调函数进一步过滤出日期
       $arr = explode(' ',$content);
       return $arr[0];
   }),
   //采集文章正文内容,利用过滤功能去掉文章中的超链接,但保留超链接的文字,并去掉版权、JS代码等无用信息
   'content' => array('.post_content','html','a -.content_copyright -script',function($content){
       //利用回调函数下载文章中的图片并替换图片路径为本地路径
       //使用本例请确保当前目录下有image文件夹,并有写入权限
       //由于QueryList是基于phpQuery的,所以可以随时随地使用phpQuery,当然在这里也可以使用正则或者其它方式达到同样的目的

       $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();
//打印结果
print_r($data);
登入後複製

 

 

#注意:

使用phpQuery類別時需要在前面加上\,因為phpQuery.php中沒有使用命名空間,因為使用命名空間後,QueryList.php無法使用phpQuery類別。

更多相關ThinkPHP知識,請造訪ThinkPHP教學

以上是Thinkphp5與QueryList實作擷取頁面功能(爬蟲)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

寶塔部署thinkphp5報錯怎麼辦 寶塔部署thinkphp5報錯怎麼辦 Dec 19, 2022 am 11:04 AM

寶塔部署thinkphp5報錯怎麼辦

thinkphp5 post不值怎麼辦 thinkphp5 post不值怎麼辦 Dec 06, 2022 am 09:29 AM

thinkphp5 post不值怎麼辦

thinkphp5怎麼取得請求過來的網址 thinkphp5怎麼取得請求過來的網址 Dec 20, 2022 am 09:48 AM

thinkphp5怎麼取得請求過來的網址

thinkphp5 url重寫不行怎麼辦 thinkphp5 url重寫不行怎麼辦 Dec 12, 2022 am 09:31 AM

thinkphp5 url重寫不行怎麼辦

怎麼去除thinkphp5標題欄icon 怎麼去除thinkphp5標題欄icon Dec 20, 2022 am 09:24 AM

怎麼去除thinkphp5標題欄icon

thinkphp5提示控制器不存在怎麼辦 thinkphp5提示控制器不存在怎麼辦 Dec 06, 2022 am 10:43 AM

thinkphp5提示控制器不存在怎麼辦

ThinkPHP5怎麼查詢昨天的數據 ThinkPHP5怎麼查詢昨天的數據 Dec 05, 2022 am 09:20 AM

ThinkPHP5怎麼查詢昨天的數據

thinkphp5報錯提示怎麼設定 thinkphp5報錯提示怎麼設定 Dec 07, 2022 am 10:31 AM

thinkphp5報錯提示怎麼設定

See all articles