国产精品一区二区三区……-大杳蕉伊人欧美一本遒在饯-日本不卡一区免费在线观看-国产亚洲欧美中文字幕

400-800-9385
網(wǎng)站建設(shè)資訊詳細(xì)

怎么用php抓取網(wǎng)站小說

發(fā)表日期:2020-05-30 11:05:45   作者來源:旺   瀏覽:5933   標(biāo)簽:php,網(wǎng)站小說    
抓取小說內(nèi)容,就是抓取網(wǎng)站的文字內(nèi)容,和抓取圖片等其他網(wǎng)站內(nèi)容方法都是一樣的,我們拿筆趣閣做個簡單的例子:
https://www.52bqg.com/modules/article/search.php?searchkey=
這個是筆趣閣網(wǎng)站搜索書的地址searchkey= 后面加關(guān)鍵詞,我們以關(guān)鍵詞‘天下’為例,我們發(fā)送的時候也應(yīng)該urlencode一下。

1

 
但是我發(fā)現(xiàn)我的發(fā)送參數(shù)和原網(wǎng)站的不一樣 我的是:%E5%A4%A9%E4%B8%8B。
 

 
這個應(yīng)該是編碼問題我的是utf-8 查看筆趣閣發(fā)現(xiàn)是gdk,所以我們應(yīng)該也要轉(zhuǎn)成gdk編碼的

3

 
 
urlencode(iconv('utf-8', 'gb2312', $BookName));//將utf轉(zhuǎn)成gd3212
 

 
 
 function search_book($bookName){
      //  $url_book='https://www.52bqg.com/modules/article/search.php?searchkey='.urlencode($bookName);
       $url_book='https://www.52bqg.com/modules/article/search.php?searchkey='. urlencode(iconv('utf-8', 'gb2312', $bookName));
 
      //dump($url_book);
       $ch = curl_init();
        $this_header = array(
        "content-type: application/x-www-form-urlencoded; 
        charset=gbk"
        );
        curl_setopt($ch,CURLOPT_HTTPHEADER,$this_header);//定義頭部
        curl_setopt ($ch, CURLOPT_URL,$url_book);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,20);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //必須添加,不加訪問不了https( ssl證書)
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//同上
        $err=curl_error($ch);
        $res = curl_exec($ch);
        dump($res);exit;
        curl_close($ch);
       
        return $res;
}
 
獲取內(nèi)容后查找抓取的頁面內(nèi)容:
 

4

 
發(fā)現(xiàn)亂碼了,所以還是編碼問題要將gdk轉(zhuǎn)回utf-8:
$res=mb_convert_encoding($res, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');//使用該函數(shù)對結(jié)果進(jìn)行轉(zhuǎn)碼
 
內(nèi)容抓取到我們就要提取我們需要的內(nèi)容:

比如這個目錄搜索結(jié)果,可直接用正則提取這個樣式下的內(nèi)容,也可以更細(xì)致的提取每一個的內(nèi)容
查看網(wǎng)站結(jié)果 發(fā)現(xiàn) s1 (小說類型) ,s2(小說名-鏈接) ,s3(最新章節(jié)),
s4(作者),s5(更新時間),s7(狀態(tài))

 
用正則把每個內(nèi)容都取出來:
$rule="/<span class=\"s1\".*?>.*?<\/span>/is";//小說類型
        $rule2="/<span class=\"s2\".*?>.*?<\/span>/is";//小說名
        $rule3="/<span class=\"s3\".*?>.*?<\/span>/is";//最新章節(jié)
        $rule4="/<span class=\"s4\".*?>.*?<\/span>/is";//作者
        $rule5="/<span class=\"s5\".*?>.*?<\/span>/is";//更新時間
        $rule6="/<span class=\"s7\".*?>.*?<\/span>/is";//狀態(tài)
        $url_rule='/(?<=href=\")[^\"]+(?=\")/';//書籍鏈接
        $news_html='';
         /*獲取內(nèi)容*/
        preg_match_all($rule,$html,$news_html['type']);
        preg_match_all($rule2,$html,$news_html['name']);
        preg_match_all($rule3,$html,$news_html['news']);
        preg_match_all($rule4,$html,$news_html['author']);
        preg_match_all($rule5,$html,$news_html['time']);
        preg_match_all($rule6,$html,$news_html['status']);
 
這是我們自己的前端展示的內(nèi)容.

 
獲取數(shù)據(jù)分頁  后面加上page參數(shù)就可以了;具體方法都是一樣的,就是很繁瑣,可以根據(jù)結(jié)構(gòu)優(yōu)化一下正則.

 
 
然后上面獲取了書籍的鏈接,就可以用同樣的流程獲取書籍的封面,章節(jié)等信息。所以想白嫖又不想看垃圾廣告還是要花的時間去弄的,后期有時間可以將數(shù)據(jù)記錄在自己的數(shù)據(jù)庫.防止網(wǎng)站改版被封.
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請注明來自http://pdcharm.com/news/5695.html
相關(guān)網(wǎng)站設(shè)計案例
乌恰县| 来凤县| 衡阳县| 文安县| 兴文县| 焦作市| 莱芜市| 那曲县| 集安市| 万载县| 江油市| 贡觉县| 黎川县| 喀喇| 忻州市| 尚志市| 隆林| 渭源县| 九龙县| 龙里县| 金山区| 晋城| 高邑县| 白河县| 高雄市| 通州市| 武定县| 庆元县| 宕昌县| 永嘉县| 桐柏县| 乌兰浩特市| 濉溪县| 嵊泗县| 新民市| 横峰县| 武山县| 玉屏| 灌云县| 崇明县| 凤台县|