400-800-9385
網站建設資訊詳細

php抓取第三方網站的(de)小說内容

發表日期:2023-02-01 20:20:18   作者來(lái)源:劉紅旺   浏覽:803   标簽:php網站建設    
這(zhè)裏用(yòng)到  QueryList這(zhè)個(gè)第三方插件,安裝要求
php>=7.1
composer  安裝
 
composer require jaeger/querylist
 
 
或者直接下(xià)載
開箱即用(yòng):https://pan.baidu.com/s/1QPMUalL5HcVJ4L7zUY0LMg
require_once  app()->getRootPath()."extend/queryList/autoload.php";// 引入插件
$QueryList=new \QL\QueryList();
$url ='xxxxxxxxxxxxxxxxxxx';//需要獲取小說的(de)鏈接
$rt = [];
//根據頁面獲取書(shū)籍信息
$rules = [
     'title' => ['.t>a','text'], // 獲取小說名稱
     'link' => ['.n>a','href'], // 獲取小說的(de)鏈接
     'author' => ['.author>a','text'], //獲取小說的(de)作者
     'status' => ['.abover>span','text'], //獲取小說的(de)狀态
     ];
       
$range = '.ul_m_list li';  // 切片選擇器
         //encoding('UTF-8','GB2312') 轉碼
$rt = $QueryList->get($url)->rules($rules)->range($range)->removeHead()->encoding('UTF-8','GB2312')->query()->getData();
        dump($rt->all());exit;
 
根據網站的(de)機構去獲取書(shū)籍内容,比如這(zhè)個(gè)網站

網站

書(shū)名是在class   .t>a 下(xià)面的(de) ,鏈接是在class   .n>a 下(xià)面的(de)
 
range :切片選擇工具    就是書(shū)籍循環的(de)外包結構 可(kě)以将書(shū)籍分(fēn)割成一個(gè)一個(gè)的(de)數組
remove:可(kě)以将内容中的(de)部分(fēn)内容過濾掉
$html =<<<STR
    <div id="content">
 
        <span class="tt">作者:xxx</span>
 
        這(zhè)是正文内容段落1.....
 
        <span>這(zhè)是正文内容段落2</span>
 
        <p>這(zhè)是正文内容段落3......</p>
 
        <span>這(zhè)是廣告</span>
        <p>這(zhè)是版權聲明(míng)!</p>
    </div>
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] => 這(zhè)是正文内容段落1.....
 
        <span>這(zhè)是正文内容段落2</span>
 
        <p>這(zhè)是正文内容段落3......</p>
        )
 
)
 
 
 
print_r($rt->all());
 
$rt->find('.tt,span:last,p:last')->remove();
 
encoding:作用(yòng)于内容的(de)轉碼,原來(lái)的(de)網站'GB2312' 獲取的(de)内容會出現亂碼,需要将他(tā)轉換成‘utf-8‘。

網站2

$html =<<<STR
<div>
    <p>這(zhè)是内容</p>
</div>
STR;
$rule = [
    'content' => ['div>p:last','text']
];
$data = QueryList::html($html)->rules($rule)
                ->encoding('UTF-8','GB2312')->query()->getData();
 
設置輸入輸出編碼,并移除html頭部
如果設置輸入輸出參數仍然無法解決亂碼,那就使用(yòng) removeHead()方法移除html頭部
 
removeHead:過濾掉頭部
 
這(zhè)樣我們就将這(zhè)個(gè)頁面的(de)書(shū)籍列表都獲取下(xià)來(lái)

數據

數據2

 
 
 
讓後通(tōng)過循環去獲取分(fēn)頁的(de)數據,根據書(shū)籍鏈接獲取書(shū)籍的(de)章(zhāng)節,封面等其他(tā)數據,最後通(tōng)過章(zhāng)節鏈接獲取到小說内容。
                          
如沒特殊注明(míng),文章(zhāng)均爲方維網絡原創,轉載請注明(míng)來(lái)自