<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                - 源碼下載地址:https://github.com/owner888/phpspider - 文檔:https://doc.phpspider.org/ - 我的環境是寶塔lnmp,php是5.4版本,不要用這個版本,缺各種擴展庫 - 錯誤1:沒有該擴展,不需要再php.ini中配置 ![](https://box.kancloud.cn/eaf77c491affd411c8061735ce872e8d_1438x362.png) - 錯誤2:缺這個擴展庫,不需要再php.ini中配置 跑跑的報這個錯:PHP Fatal error: Call to undefined function phpspider\core\mb_detect_encoding() in /www/wwwroot/wx.xiyang66.top/vendor/owner888/phpspider/core/requests.php on line 474 ![](https://box.kancloud.cn/cd18365765d624c1fe1f9bc5fc012307_1057x189.png) ![](https://box.kancloud.cn/1c9c01afb4d58cd748d80bee8f11e458_1224x178.png) 解決方法:執行?yum install php-mbstring -y [toc] ## :-: **1、在linux上跑demo** 條件:linux上要有php環境,代碼上傳上去,執行php -f demo.php ![](https://box.kancloud.cn/15ffa117287cb120f9f593e411ae7474_456x287.png) 想退出這個頁面執行quit 或 ctrl + c 你可能會疑惑,這要跑,爬來的數據放到哪里了呢?? ## :-: **2、需要在$configs中加,這倆個配置** 參考文檔configs詳解之成員 ``` php //日志存放的位置 'log_file' => './data/qiushibaike.log', 'export' => array( 'type' => 'csv', 'file' => './data/qiushibaike.csv', //爬下來的數據放在data目錄下,目錄和文件要自己提前創建好 ) ``` - 這里是存成了csv需要下載到本地電腦上看,因為這是個excel還是下載下來方便看 - 當然你也可以存到數據庫等 ## :-: **3、完整的示例** ### :-: **3.1、思路** 具體還是要看代碼,思路只是方便理解和記憶 - www.ncnews.com.cn //這個頁面是網站首頁 - http://www.ncnews.com.cn/xwzx/ncxw/twnc/ //這個頁面是列表頁 - http://www.ncnews.com.cn/xwzx/ncxw/twnc/index(_[0-9]{0,2})?.html //這個頁面是列表頁下面的頁碼 - 這回我們就清晰了,我們要爬取的是<span style="color:blue;">列表頁</span>的數據: 3.1.1、接下來設置爬取規則 ![](https://box.kancloud.cn/b4932064b57840aa89ebcedbe00d90e8_845x234.png) 3.1.2、實例化,將配置傳給這個類的構造函數 3.1.3、添加新的url到帶爬對列 3.1.4、篩選爬到的數據,如標題弄出來,內容弄出來,并組裝好數據... 3.1.5、進行入庫操作 ### :-: **3.2、代碼** ~~~ <?php /** * http://blog.csdn.net/will5451/article/details/78999995?%3E * Created by PhpStorm. * User: Administrator * Date: 2018/2/1 * Time: 22:51 */ require './vendor/autoload.php'; use phpspider\core\phpspider; use phpspider\core\requests; //請求類 use phpspider\core\selector; //選擇器類 use phpspider\core\db; //選擇器類 use phpspider\core\log; //選擇器類 /* Do NOT delete this comment */ /* 不要刪除這段注釋 */ $configs = array( 'name' => '爬取新聞', //'log_show' => true, //定義爬蟲爬取哪些域名下的網頁, 非域名下的url會被忽略以提高爬取速度 'domains' => array( 'www.ncnews.com.cn' //寫域名 ), //定義爬蟲的入口鏈接, 爬蟲從這些鏈接開始爬取,同時這些鏈接也是監控爬蟲所要監控的鏈接 'scan_urls' => array( 'http://www.ncnews.com.cn/xwzx/ncxw/twnc/' ), //定義內容頁url的規則 'content_url_regexes' => array( "http://www.ncnews.com.cn/xwzx/ncxw/twnc/index(_[0-9]{0,2})?.html" ), //爬蟲爬取每個網頁失敗后嘗試次數 'max_try' => 5, //爬蟲爬取數據導出 'export' => array( 'type' => 'db', 'table'=> 'pachong', //表名 ), 'db_config' => array( 'host' => 'localhost', 'port' => 3306, 'user' => '改成自己的', //mysql的賬號 'pass' => '改成自己的', //mysql的密碼 'name' => '改成自己的', //庫名 ), 'fields' => array( //從列表頁開始爬 array( 'name' => "lists", 'selector' => "//div[contains(@id,'container')]//ul//li[contains(@class,'item')]", 'required' => true, 'repeated' => true //寫上是數組(抓的是整個列表頁),不寫是字符串(只抓第一個) ), ), //日志存放的位置 'log_file' => 'data/qiushibaike.log', //只記錄 錯誤和調試日志 'log_type' => 'error,debug,warn,error', //爬蟲爬取網頁所使用的瀏覽器類型.隨機瀏覽器類型,用于破解防采集 'user_agent' => array( "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36", "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G34 Safari/601.1", "Mozilla/5.0 (Linux; U; Android 6.0.1;zh_cn; Le X820 Build/FEXCNFN5801507014S) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/49.0.0.0 Mobile Safari/537.36 EUI Browser/5.8.015S", ), //爬蟲爬取網頁所使用的偽IP。隨機偽造IP,用于破解防采集 'client_ip' => array( '192.168.0.2', '192.168.0.3', '192.168.0.4', ), ); $spider = new phpspider($configs); //爬蟲初始化時調用, 用來指定一些爬取前的操作 $spider->on_start = function($spider) { requests::set_header("Referer", "http://www.ncnews.com.cn/xwzx/ncxw/twnc/index.html"); }; //在爬取到入口url的內容之后, 添加新的url到待爬隊列之前調用. 主要用來發現新的待爬url, 并且能給新發現的url附加數據(點此查看“url附加數據”實例解析). $spider->on_scan_page = function($page,$content,$spider){ //列表頁只采集3頁。 for($i=0;$i<3;$i++){ if($i == 0){ //第一頁 $url = "http://www.ncnews.com.cn/xwzx/ncxw/twnc/index.html"; }else{ //之后的n頁 $url = "http://www.ncnews.com.cn/xwzx/ncxw/twnc/index_{$i}.html"; } $options = [ 'method' => 'get', 'params' => [ 'page' => $i ], ]; $spider->add_url($url,$options); //添加新的url到待爬隊列 } }; /** * 對匹配后的字段field進行回調處理 * @param $filename * @param $data * @param $page * @return array */ $spider->on_extract_field = function($filename,$data,$page){ $arr = []; //處理抽取到的fields中name == lists的數據 if($filename == 'lists'){ if(is_array($data)){ foreach($data as $k=>$v){ $img = selector::select($v,"//img"); //如果該新聞沒有圖片,就刪除這條數據 if(empty($img)){ unset($data[$k]); }else{ $url = "http://www.ncnews.com.cn/xwzx/ncxw/twnc"; $title = trim(selector::select($v,"//h3//a")); //抓列表頁的標題 //抓列表頁的圖片 if(substr(selector::select($v,"//img"),0,1)){ $title_imgs = selector::select($v,"//img"); }else{ $title_imgs = $url . ltrim(selector::select($v,"//img"),'.'); } $title_desc = trim(selector::select($v,"//h5")); //抓列表頁的新聞簡介 //抓文章,跳轉到內容頁 $p = '/<h3><a[^<>]+href * \= *[\"\']?([^\'\"\+]).*?/i'; $title_url = selector::select($v,$p,'regex'); if(substr($title_url,0,1) == 'h'){ $title_link = $title_url; }else{ $title_link = $url . ltrim($title_url,'.'); } $title_time = strip_tags(selector::select($v,"//h6")); //抓列表頁的時間 //組裝數據 $arr[$k] = [ 'title' => $title, 'title_imgs' => $title_imgs, 'title_desc' => $title_desc, 'title_link' => $title_link, //前往內容頁的鏈接 'title_time' => $title_time, ]; } } } } return $arr; }; //入庫操作 $spider->on_extract_page = function($page,$data){ // echo "<pre>"; // var_dump($data); // die; //處理哪個數據 if(isset($data['lists'])){ foreach($data['lists'] as $v){ $arr = [ 'title' => trim($v['title']), 'title_imgs' => urlencode($v['title_imgs']), 'title_desc' => $v['title_desc'], 'title_link' => urlencode($v['title_link']), 'title_time' => $v['title_time'] ]; //標題重復就不入庫 $sql = "select count(*) as `count` from `pachong` where `title`".$v['title']; $row = db::get_one($sql); if(!$row['count']){ db::insert('pachong',$arr); } } $data = $arr; } return $data; }; $spider->start(); ~~~ ### :-: **3.3、表的結構** ![](https://box.kancloud.cn/7a7ec893681169fe88079642c1a33fc9_595x148.png) ## :-: **4、測試爬取** 按照作者的思想,每次爬取之前先要測試一下,該網站能不能爬到(參考文檔:如何進行運行前測試) >[info]這是測試用的,該頁面請用瀏覽器直接訪問,方便查看 ![](https://box.kancloud.cn/761d1907b09921bede2022c732c4dfe0_700x377.png) ## :-: **5、模擬登陸** - 模擬登陸(參考文檔:如何實現模擬登陸) >[info]這是測試用的,該頁面請用瀏覽器直接訪問,方便查看 ![](https://box.kancloud.cn/7867d5bd1d0f66b9d951fd456a3a205b_1051x757.png) - 模擬登陸挖段子 ![](https://box.kancloud.cn/772dbef7e7923e3d57a9f04be569a4dd_1392x171.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看