国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從segmentfault爬數據到 用koa2,vue全家桶,mongodb開發一個segmentf

ChristmasBoy / 2625人閱讀

摘要:注意網站中用的所有技術可以交流學習不要以線上環境運行,因為源碼中沒有包含相關文件中的,授權登陸需要自己配置賬號密碼只有讀取權限交流群

前言

線上環境小包總

技術棧

服務器: node、koa2

客戶端: vue、vuex、vue-router、Element-UI

數據庫: redis、mongodb

打包: webpack

網站模塊

爬蟲模塊:用于爬取一些我看的上的文章,主要采用request,cheerio模塊對數據的爬取和處理,

同時需要注意處理爬取圖片的處理

文章模塊:展示爬取的文章數據,并進行分類處理和展示

登錄注冊模塊: 支持用戶的登錄注冊,接入第三方登錄接口,注冊采用nodemailer模塊進行郵箱驗證

留言模塊: 讓用戶在本網站留下自己的足記

統計模塊: 統計網站訪問量等數據

爬蟲模塊

segmentfault的文章不用登錄就能查看,所有可用訪問url就能取到文章的內容,唯一需要的注意的是請求的圖片鏈接要做特殊的處理,最開始本來我是用的盜鏈的形式,后面過了一段時間segmentfault不允許盜鏈了,沒辦法只能從自己網站加載了。

在segmentfault中圖片的src中帶有?,&符號這中特殊的符號(應該是圖片服務器的原因),并且也沒有圖片的后綴

、所以我在爬取圖片的時候就需要處理特殊符號,和加后綴

let imgError = false, imgPath = (imgSavePath + src).replace(/?|&/g, "_");
//替換特殊符號
let writeFile = fs.createWriteStream(imgPath), extname;
    request(_src || (addr + src), {timeout: 60000}).on("response", function(response){
        if(response.statusCode.toString().indexOf("4") == 0){
            self.remove();
            imgError = true;
            resolve2();
            return;
        }
        extname = path.extname(response.request.path);
        //在響應頭中獲取文件后綴                                
        if(!extname && response.headers["content-type"].indexOf("image") != -1){
            extname = "." + response.headers["content-type"].split("/")[1];
            if(extname.indexOf("svg") != -1){
                extname = ".svg";
            }
        }
        let imgSrc = _src ?  src : src + extname;
        self.attr("src", imgSrc);
    }).on("error", function(err){
        writeLog("請求圖片失?。?"+ (_src||src)+ " 來至url: "+ url, true);
        self.remove();
        imgError = true;
        reject2();
    }).pipe(writeFile);
    writeFile.on("finish", function(){
        if(imgError){
            return ;
        }    
        if(extname){
            let imgPath = (imgSavePath + src).replace(/?|&/g, "_");
            //添加后綴
            if(fs.existsSync(imgPath)){
                try{
                    if(src.indexOf(".") != -1){
                        resolve2("自帶后綴: "+ src);
                        return;
                    }
                    fs.renameSync(imgPath, imgPath + extname);
                    writeLog("修改圖片: " + imgPath + extname);                            
                }catch(e){
                    writeLog("修圖圖片失敗原因: ."+ src + extname + "
" + e, true);
                }
                resolve2(imgPath + extname);
            }else {
                writeLog("圖片不存在: ."+ src+ " 來至url: "+ url, true);
                reject2(url);
            }
        }
    });

文章中的代碼樣式,需要自己用highlight模塊去添加。
然后就是把文章的關鍵信息,如文件的url,時間,作者,保存到數據庫,把文章的真正的html保存為一個文件,然后根據url去加載本地的html。

注意

網站中用的所有技術可以交流學習

不要以線上環境運行,因為源碼中沒有包含https相關文件

config.js中的github,qq授權登陸需要自己配置

mongodb賬號密碼只有讀取權限

QQ交流群
133240225、 193572405

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84816.html

相關文章

  • segmentfault數據 koa2vue全家mongodb開發一個segmentf

    摘要:注意網站中用的所有技術可以交流學習不要以線上環境運行,因為源碼中沒有包含相關文件中的,授權登陸需要自己配置賬號密碼只有讀取權限交流群 前言 線上環境小包總 showImg(https://segmentfault.com/img/bVTvhf?w=1297&h=763); 技術棧 服務器: node、koa2 客戶端: vue、vuex、vue-router、Element-UI 數...

    aaron 評論0 收藏0
  • vue2全家+koa2+mongodb搭建一個簡單偽全棧博客

    摘要:本來不想推的,看到上有個項目很簡單,都有,推推看咯。雖然這個項目很簡單,但是還蠻有趣,用來入門和以及再好不過了。 本來不想推的,看到github上有個項目很簡單,都有300 star,推推看咯。雖然這個項目很簡單,但是還蠻有趣,用來入門vue2和nodejs以及mongodb再好不過了。 等這幾天把公司手頭的事情忙完,再把vuex的部分強化下。 基于vue2/vuex/vue-rout...

    bitkylin 評論0 收藏0
  • 阿里云centOS部署vue全家+node+koa2+mongo項目

    摘要:啟動和停止設置開機自啟配置阿里云服務器端口此項不是必須,本地連接遠程數據庫調試查看方便些就開啟由于只開啟了一些基礎端口如,其他都關閉,要自己配置。 寫在前面 文章有丟丟長,前端開發第一次部署項目,有問題請及時提出,以免誤導其他童鞋,輕拍~, 更新系統 sudo yum update 安裝mongo 1. 添加MongoDB源 在/etc/yum.repos.d/下創建名為mongodb...

    newtrek 評論0 收藏0

發表評論

0條評論

ChristmasBoy

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<