1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      laravel中如何使用simple_html_dom爬取顯示整本小說-創(chuàng)新互聯(lián)

      小編給大家分享一下laravel中如何使用simple_html_dom爬取顯示整本小說,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

      站在用戶的角度思考問題,與客戶深入溝通,找到南木林網(wǎng)站設(shè)計(jì)與南木林網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋南木林地區(qū)。

      一、在laravel引入第三方類


      1.在項(xiàng)目根目錄下app目錄中新建一個(gè)文件夾命名為Lib(自定義名稱)

      2.如果引入第三方庫多的話可以在Lib下再新建幾個(gè)目錄分類,由于只引入了一個(gè)類,這里沒有新建文件夾。(根據(jù)引入類的多少自己定義)

      將simple_html_dom.php復(fù)制到Lib下

      3.找到項(xiàng)目根目錄下的composer.json文件,將第三方類的路勁寫入autoload下的classmap中,這樣才能自動加載

      "autoload": {
            "classmap": [
                "database/seeds",
                "database/factories",
                "app/Lib/simple_html_dom.php"
            ]
        },

      4.在cmd控制臺中切換到項(xiàng)目根目錄,執(zhí)行命令:

      composer dumpautoload

      5.在控制器中use這個(gè)類即可

      use simple_html_dom;

      $html = new simple_html_dom(); 使用

      二、創(chuàng)建路由

      Route::get('/novel_list','index\Spnovel@index');

      三、創(chuàng)建控制器Spnovel.php


      load($list_html);
      		$list = $html->find('#list dd a');
      		foreach ($list as $k=>$v) {
      			$arr1=$arr2=[];
      			$p1 = '/(.*?)<\/a>/i';
      			$p2 = '/.*?<\/a>/i';
      			preg_match($p1,$v->outertext,$arr1);
      			preg_match($p2,$v->outertext,$arr2);
      			$content[$k][0]=$arr1[1];
      			$content[$k][1]=$arr2[1];
      		}
      		array_splice($content,0,12); 
      		return $content;
      	}
      }
      class mySpClass{
      	// 向服務(wù)器發(fā)送最簡單的get請求
      	public static function getCurl($url,$header=null){
      		// 1.初始化
      		$ch = curl_init($url);   //請求的地址
      		// 2.設(shè)置選項(xiàng)
      		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//獲取的信息以字符串返回,而不是直接輸出(必須) 
      		curl_setopt($ch,CURLOPT_TIMEOUT,10);//超時(shí)時(shí)間(必須)
      		curl_setopt($ch, CURLOPT_HEADER,0);// 	啟用時(shí)會將頭文件的信息作為數(shù)據(jù)流輸出。 
      		//參數(shù)為1表示輸出信息頭,為0表示不輸出
      		curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //不驗(yàn)證證書
      		curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); //不驗(yàn)證證書
      		if(!empty($header)){
      			curl_setopt($ch,CURLOPT_HTTPHEADER,$header);//設(shè)置頭信息
      		}else{
      			$_head = [
      			'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'
      			]; 
      			curl_setopt($ch,CURLOPT_HTTPHEADER,$_head);
      		}
      		// 3.執(zhí)行
      		$res = curl_exec($ch);
      		// 4.關(guān)閉
      		curl_close($ch);
      		return $res;
      	}
      }

      以上代碼的解釋:首先要對laravel框架了解,對php類要有所了解

      訪問了以上路由,運(yùn)行的是Spnovel.php控制器中的index方法,$url是某一本小說的章節(jié)列表的地址,將其作為參數(shù)運(yùn)行自定義類mySpClass中的getcurl方法,返回這個(gè)頁面的html文檔字符串。運(yùn)行此類中的getList方法,參數(shù)是需要解析的html字符串。將這個(gè)方法私有化,使用simple_html_dom解析,配置正則提取出每章的url地址和章節(jié)名稱。并返回這個(gè)數(shù)組,通過return view('index.spnovel.index',$data);將打開index/spnovel/index.blade.php,請看index.blade.php

      四、創(chuàng)建視圖index.blade.php

      
      
      
      	爬取的小說列表
      	
      	body{padding:0px;margin:0px;}
      	#lists{width:100%;padding:30px 50px;box-sizing:border-box;}
      	ul{margin:0;padding: 0;overflow:hidden;}
      	ul li{list-style:none;display:inline-block;float:left;width:25%;color:#444;}
      	ul li:hover{color:#777;cursor: pointer;}
      	img {z-index:-1;width:100%;height:100%;position:fixed;}
      	
      
      
      	
      	
      		
        @foreach($List as $item)
      • {{$item[0]}}
      • @endforeach

      以上代碼的解釋:css就簡單的寫到這里,img是作為背景圖片的。ul里面循環(huán)li,{{$item[1]}}是獲得的地址參數(shù),{{$item[0]}}是獲得的章節(jié)名稱。看一下數(shù)組和最后的效果。

      laravel中如何使用simple_html_dom爬取顯示整本小說

      五、運(yùn)行

      laravel中如何使用simple_html_dom爬取顯示整本小說

      接下來就是每一章節(jié)的內(nèi)容了

      先看路由

      Route::get('/novel_con/{a}/{b}/{c}','index\Spnovel@get_nContent');

      這與每一章的url參數(shù)相對應(yīng),比如某一章的參數(shù)為:novel_con/85/85445/27248645.html

      寫get_nContent方法


      public function get_nContent(Request $req){
      		$url1 = $req->a.'/'.$req->b.'/'.$req->c;
      		$url = "https://www.7kzw.com/".$url1;
      		$res = mySpClass::getCurl($url);//獲得
      		// 開始解析
      		$data['artic']= self::getContent($res);
      		$next = (int)$req->c;
      		$next = $next+1;
      		$data['artic']['next']="/novel_con/".$req->a.'/'.$req->b.'/'.$next.'.html';
      		return view('index.spnovel.ncontent',$data);
      	}
      private static function getContent($get_html){
      		$html = new simple_html_dom();
      		@$html->load($get_html);
      		$h2 = $html->find('.bookname h2');
      		foreach ($h2 as $k=>$v) {
      			$artic['title'] = $v->innertext;
      		}
      		// 查找小說的具體內(nèi)容
      		$divs = $html->find('#content');
      		foreach ($divs as $k=>$v) {
      			$content = $v->innertext;
      		}
      		// 正則替換去除多余部分
      		$pattern = "/(

      .*?<\/p>)|(.*?<\/div>)/"; $artic['content'] = preg_replace($pattern,'',$content); return $artic; }

      解釋:$req->a,$req->b,$req->c,分別是三個(gè)參數(shù),然后將其合并為一個(gè)完整的請求某一章的地址,然后還是通過mySpClass::getCurl獲得某一章的html字符串。然后使用本類中的getContent解析這個(gè)頁面,先看解析方法,和上篇文章一章解析出章節(jié)的標(biāo)題和內(nèi)容,寫到數(shù)組中,并且去掉了多余的文字廣告部分。$next則是存放的下一章的地址,用于在章節(jié)詳情頁面跳轉(zhuǎn)。


      視圖ncontent.blade.php


      
      
      
      	{{$artic['title']}}
      	
      	h3{text-align:center;padding-top:30px;}
      	div{margin:20px 50px;font-size:20px;}
      	img {z-index:-1;width:100%;height:100%;position:fixed;}
      	.next {position:fixed;right:10px;bottom:20px;background:coral;border-radius:3px;padding:4px;}
      	.next:hover{color:#fff;}
      	
      
      
      	
      	

      {{$artic['title']}}

      下一章
      {!!$artic['content']!!}

      解釋:因?yàn)橹挥挟?dāng)前一篇所以不需要循環(huán),{{$artic['title']}}就是標(biāo)題,也可以寫到title中。{!!$artic['content']!!}的寫法就是不需要轉(zhuǎn)義文章的內(nèi)容,否則就會有很多其他字符了,如
      等。下一章的按鈕的地址直接就用傳遞過來的即可,position:fixed固定定位按鈕,隨時(shí)可以下一章。

      運(yùn)行

      laravel中如何使用simple_html_dom爬取顯示整本小說

      以上是“l(fā)aravel中如何使用simple_html_dom爬取顯示整本小說”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      分享文章:laravel中如何使用simple_html_dom爬取顯示整本小說-創(chuàng)新互聯(lián)
      瀏覽路徑:http://www.ef60e0e.cn/article/ggjoh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        扎兰屯市| 彰化市| 永登县| 沙雅县| 屏东县| 武安市| 乐清市| 青田县| 通化县| 平阳县| 铜梁县| 三亚市| 中西区| 汕尾市| 南陵县| 横峰县| 山丹县| 惠来县| 株洲市| 松江区| 鸡西市| 徐州市| 平定县| 晋宁县| 汨罗市| 汾西县| 齐齐哈尔市| 大余县| 瑞金市| 湖北省| 临潭县| 探索| 来凤县| 建平县| 衢州市| 新巴尔虎左旗| 黄浦区| 永仁县| 家居| 武隆县| 襄垣县|