日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php爬虫QueryList使用

發(fā)布時間:2023/12/29 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php爬虫QueryList使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、QueryList手冊:https://www.php.cn/course/371.html

? ? ? QueryList V4版本文檔:?https://querylist.cc/docs/guide/v4/

2、下載QueryList:https://www.php.cn/xiazai/leiku/308,解壓得到phpQuery.php和QueryList.php這兩個文件。

3、手動下載phpQuery.php和QueryList.php這兩個文件,然后手動引入這兩個文件就可以了。
?

<?php require?'phpQuery.php'; require?'QueryList.php'; use?QL\QueryList; $hj?=?QueryList::Query('http://mobile.csdn.net/',array("url"=>array('.unit?h1?a','href'))); $data?=?$hj->getData(function($x){return?$x['url']; }); print_r($data);

4、使用QueyList只需要編寫規(guī)則庫,然后把規(guī)則庫傳給QueryList的靜態(tài)方法Query,QueryList就會自動按照規(guī)則庫把內(nèi)容全部采集回來了,而規(guī)則庫是用jQuery選擇器來編寫的,所以使用QueryList的整個過程非常簡單!

規(guī)則庫的編寫規(guī)則如下(簡單模式):

$rules?=?array('規(guī)則名'?=>?array('jQuery選擇器','要采集的屬性'),'規(guī)則名2'?=>?array('jQuery選擇器','要采集的屬性'),.......... );

下面我們來動手試試吧:

(1)采集目標(biāo),下面的代碼片段

//引入文件 require 'phpQuery.php'; require 'QueryList.php'; //使用QL命名空間下的QueryList類 use QL\QueryList; $html?=?<<<STR <div?id="one"><div?class="two"><a?href="http://querylist.cc">QueryList官網(wǎng)</a><img?src="http://querylist.com/1.jpg"?alt="這是圖片"><img?src="http://querylist.com/2.jpg"?alt="這是圖片2"></div><span>其它的<b>一些</b>文本</span> </div>???????? STR;

(2)編寫采集規(guī)則

$rules?=?array(//采集id為one這個元素里面的純文本內(nèi)容'text'?=>?array('#one','text'),//采集class為two下面的超鏈接的鏈接'link'?=>?array('.two>a','href'),//采集class為two下面的第二張圖片的鏈接'img'?=>?array('.two>img:eq(1)','src'),//采集span標(biāo)簽中的HTML內(nèi)容'other'?=>?array('span','html') );

(3)開始采集

$data?=?QueryList::Query($html,$rules)->data; //打印結(jié)果 print_r($data);

結(jié)果如下:

Array ([0]?=>?Array([text]?=>?QueryList官網(wǎng)其它的一些文本[link]?=>?http://querylist.cc[img]?=>?http://querylist.com/2.jpg[other]?=>?其它的<b>一些</b>文本) )

5、API

(1)Query()方法

Query方法為QueryList唯一的主方法,用靜態(tài)的方式調(diào)用。

原型:

QueryList::Query($page,array $rules, $range = ‘’, $outputEncoding = null, $inputEncoding = null,$removeHead = false)

參數(shù)解釋:

  • $page 采集的目標(biāo)頁面

類型:string
要抓取的網(wǎng)頁URL地址(支持https);或者是html代碼片段

  • $rules 采集規(guī)則

類型:array

  • $range 區(qū)域選擇器 (可選)

類型:string
默認(rèn)值:''

區(qū)域選擇器或者說范圍選擇器,指 先按照規(guī)則 選出 幾個大塊 ,然后再分別再在塊里面 進(jìn)行相關(guān)的選擇。當(dāng)采集列表的時候,建議設(shè)置這個參數(shù)。

查看區(qū)域選擇器例子:http://doc.querylist.cc/site/index/doc/29

  • $outputEncoding 輸出編碼(可選)

類型:string
默認(rèn)值:null

指要以什么編碼輸出(UTF-8,GB2312,…..),防止出現(xiàn)亂碼,如果設(shè)置null則不改變原字符串編碼

  • $inputEncoding 輸入編碼(可選)

類型:string
默認(rèn)值:null

明確指定輸入的頁面編碼格式(UTF-8,GB2312,…..),防止出現(xiàn)亂碼,如果設(shè)置null則自動識別

  • $removeHead ?是否移除頭部(可選)

類型:bool
默認(rèn)值:false

是否移除頁面頭部區(qū)域,亂碼終極解決方案。
注意:當(dāng)這個參數(shù)設(shè)置為true的時候,無法選擇頁面中head區(qū)域里面的內(nèi)容。

(2)getData( ) 方法

獲取采集結(jié)果數(shù)據(jù)的結(jié)果數(shù)據(jù),并可以進(jìn)一步處理結(jié)果。

補(bǔ)全圖片鏈接,改造采集代碼:

$baseUrl = 'http://xxxx.com'; $data = QueryList::Query($html,array('image' => array('.two>img','src')))->getData(function($item) use($baseUrl){return $baseUrl.$item['image'];}); print_r($data);

(3)getHtml( ) 方法

返回值:string

獲取目標(biāo)頁面源碼,主要用于調(diào)試。

(4)setQuery( ) 方法

返回值:QueryList對象

重新設(shè)置選擇器,不會再次重復(fù)的取抓取一遍目標(biāo)頁面源碼,用于重復(fù)采集同一個頁面多處的內(nèi)容。

原型:

setQuery(array $rules, $range = ‘’,$outputEncoding = null, $inputEncoding = null,$removeHead = false)

參數(shù)解釋同Query

//采集文本 $ql = QueryList::Query($html,array('txt' => array('span:eq(0)','text'))); print_r($ql->data); //采集圖片 $ql->setQuery(array('image' => array('.xx img','src') )); print_r($ql->data); 采集結(jié)果: Array ([0] => Array([txt] => xxxxxxxx) ) Array ([0] => Array([image] => /path/to/1.jpg) ) **/

(5)run( ) 方法

返回值:需查看對應(yīng)的插件文檔

運(yùn)行QueryList擴(kuò)展

原型:

run($class,$args = array())

參數(shù): $class

類型:string

插件名稱

參數(shù): $args

類型:array

傳遞給插件的參數(shù)

$login?=?QueryList::run('Login',['target'?=>?'http://xxx.com/login.php','method'?=>?'post','params'?=>?['username'=>'admin','password'=>'admin'],'cookiePath'?=>?'./cookie123.txt']); //........

(6)getInstance( ) 方法

返回值:實(shí)例對象

獲取任意類的單例,QueryList內(nèi)部方法,開放出來供大家使用。

原型:

getInstance($class,$arg1,$arg2,……)

參數(shù): $class

類型:string

包含命名空間的類名

參數(shù):$arg1,$arg2,……

可傳遞任意多個參數(shù)


用法

運(yùn)行下面例子需要先安裝Http庫:

composer?require?jaeger/http ???????<?php require?'vendor/autoload.php'; use?QL\QueryList; $http?=?QueryList::getInstance(QL\Ext\Lib\Http::class); $html?=?$http->get('http://www.baidu.com'); print_r($html);

?

總結(jié)

以上是生活随笔為你收集整理的php爬虫QueryList使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。