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

2023-03-16    分類: 網(wǎng)站建設(shè)

抓取小說內(nèi)容,就是抓取網(wǎng)站的文字內(nèi)容,和抓取圖片等其他網(wǎng)站內(nèi)容方法都是一樣的,我們拿筆趣閣做個(gè)簡(jiǎn)單的例子:
https://www.52bqg.com/modules/article/search.php?searchkey=

這個(gè)是筆趣閣網(wǎng)站搜索書的地址searchkey= 后面加關(guān)鍵詞,我們以關(guān)鍵詞‘天下’為例,我們發(fā)送的時(shí)候也應(yīng)該urlencode一下。
但是我發(fā)現(xiàn)我的發(fā)送參數(shù)和原網(wǎng)站的不一樣 我的是:%E5%A4%A9%E4%B8%8B。

這個(gè)應(yīng)該是編碼問題我的是utf-8 查看筆趣閣發(fā)現(xiàn)是gdk,所以我們應(yīng)該也要轉(zhuǎn)成gdk編碼的
urlencode(iconv('utf-8','gb2312',$BookName));//將utf轉(zhuǎn)成gd3212

functionsearch_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)容:

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

內(nèi)容抓取到我們就要提取我們需要的內(nèi)容:
比如這個(gè)目錄搜索結(jié)果,可直接用正則提取這個(gè)樣式下的內(nèi)容,也可以更細(xì)致的提取每一個(gè)的內(nèi)容
查看網(wǎng)站結(jié)果 發(fā)現(xiàn) s1 (小說類型) ,s2(小說名-鏈接) ,s3(最新章節(jié)),

s4(作者),s5(更新時(shí)間),s7(狀態(tài))
用正則把每個(gè)內(nèi)容都取出來:
$rule="/<spanclass=\"s1\".*?>.*?<\/span>/is";//小說類型
$rule2="/<spanclass=\"s2\".*?>.*?<\/span>/is";//小說名
$rule3="/<spanclass=\"s3\".*?>.*?<\/span>/is";//最新章節(jié)
$rule4="/<spanclass=\"s4\".*?>.*?<\/span>/is";//作者
$rule5="/<spanclass=\"s5\".*?>.*?<\/span>/is";//更新時(shí)間
$rule6="/<spanclass=\"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)化一下正則.

網(wǎng)頁題目:怎么用php抓取網(wǎng)站小說
網(wǎng)頁路徑:http://www.muchs.cn/news39/244889.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、Google、網(wǎng)站導(dǎo)航網(wǎng)站維護(hù)、電子商務(wù)營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)