這里用到QueryList這個(gè)第三方插件,安裝要求
php=
7.1
composer安裝
composerrequirejaeger/querylist
或者直接下載
開(kāi)箱即用:https://pan.baidu.com/s/1QPMUalL5HcVJ4L7zUY0LMg
require_onceapp()-getRootPath().extend/queryList/autoload.php;//引入插件
$QueryList=new\QL\QueryList();
$url='xxxxxxxxxxxxxxxxxxx';//需要獲取小說(shuō)的鏈接
$rt=[];
//根據(jù)頁(yè)面獲取書(shū)籍信息
$rules=[
'title'=['.ta','text'],//獲取小說(shuō)名稱
'link'=['.na','href'],//獲取小說(shuō)的鏈接
'author'=['.authora','text'],//獲取小說(shuō)的作者
'status'=['.aboverspan','text'],//獲取小說(shuō)的狀態(tài)
];
$range='.ul_m_listli';//切片選擇器
//encoding('UTF-8','GB2312')
$rt=$QueryList-get($url)-rules($rules)-range($range)-removeHead()-encoding('UTF-8','GB2312')-query()-getData();
dump($rt-all());exit;
根據(jù)網(wǎng)站的機(jī)構(gòu)去獲取書(shū)籍內(nèi)容,比如這個(gè)網(wǎng)站書(shū)名是在class.ta下面的,鏈接是在class.na下面的
range:切片選擇工具就是書(shū)籍循環(huán)的外包結(jié)構(gòu)可以將書(shū)籍分割成一個(gè)一個(gè)的數(shù)組
remove:可以將內(nèi)容中的部分內(nèi)容過(guò)濾掉
$html=STR
pid=content
span class=tt作者:xxx/span
這是正文內(nèi)容段落
1.....
span這是正文內(nèi)容段落2/span
p這是正文內(nèi)容段落
3....../
span這是廣告/span
p這是版權(quán)聲明!/
/
STR;
$rules=[
'content'=['#content','html']
];
$rt=QueryList::rules($rules)
-html($html)
-query()
-getData(function($item){
$ql=QueryList::html($item['content']);
$ql-find('.tt,span:last,p:last')-remove();
$item['content']=$ql-find('')-html();
return$item;
});
Array
(
[0]=Array
(
[content]=這是正文內(nèi)容段落
1.....
span這是正文內(nèi)容段落2/span
p這是正文內(nèi)容段落
3....../
)
)
print_r($rt-all());
$rt-find('.tt,span:last,p:last')-remove();
encoding:作用于內(nèi)容的,原來(lái)的網(wǎng)站'GB2312'獲取的內(nèi)容會(huì)出現(xiàn)亂碼,需要將他轉(zhuǎn)換成utf-8。$html=STR
p這是內(nèi)容/
/
STR;
$rule=[
'content'=['pp:last','text']
];
$data=QueryList::html($html)-rules($rule)
-encoding('UTF-8','GB2312')-query()-getData();
設(shè)置輸入輸出編碼,并移除html頭部
如果設(shè)置輸入輸出參數(shù)仍然無(wú)法解決亂碼,那就使用removeHead()方法移除html頭部
removeHead:過(guò)濾掉頭部
這樣我們就將這個(gè)頁(yè)面的書(shū)籍列表都獲取下來(lái)
讓后通過(guò)循環(huán)去獲取分頁(yè)的數(shù)據(jù),根據(jù)書(shū)籍鏈接獲取書(shū)籍的章節(jié),封面等其他數(shù)據(jù),最后通過(guò)章節(jié)鏈接獲取到小說(shuō)內(nèi)容。