抓取小說(shuō)內(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)該是編碼問(wèn)題我的是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);//必須添加,不加訪問(wèn)不了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)容后查找抓取的頁(yè)面內(nèi)容:
發(fā)現(xiàn)亂碼了,所以還是編碼問(wè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 (小說(shuō)類型) ,s2(小說(shuō)名-鏈接) ,s3(最新章節(jié)),
s4(作者),s5(更新時(shí)間),s7(狀態(tài))
用正則把每個(gè)內(nèi)容都取出來(lái):
$rule="/
.*?<\/span>/is";//小說(shuō)類型
$rule2="/.*?<\/span>/is";//小說(shuō)名
$rule3="/.*?<\/span>/is";//最新章節(jié)
$rule4="/.*?<\/span>/is";//作者
$rule5="/.*?<\/span>/is";//更新時(shí)間
$rule6="/.*?<\/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ù)分頁(yè) 后面加上page參數(shù)就可以了;具體方法都是一樣的,就是很繁瑣,可以根據(jù)結(jié)構(gòu)優(yōu)化一下正則.
網(wǎng)頁(yè)標(biāo)題:怎么用php抓取網(wǎng)站小說(shuō)
文章轉(zhuǎn)載:http://vcdvsql.cn/news/244889.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站維護(hù)、微信小程序
廣告
聲明:本網(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í)需注明來(lái)源:
創(chuàng)新互聯(lián)