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