成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

從segmentfault爬數(shù)據(jù)到 用koa2,vue全家桶,mongodb開發(fā)一個segmentf

ChristmasBoy / 2632人閱讀

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

前言

線上環(huán)境小包總

技術棧

服務器: node、koa2

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

數(shù)據(jù)庫: redis、mongodb

打包: webpack

網(wǎng)站模塊

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

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

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

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

留言模塊: 讓用戶在本網(wǎng)站留下自己的足記

統(tǒng)計模塊: 統(tǒng)計網(wǎng)站訪問量等數(shù)據(jù)

爬蟲模塊

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

在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,時間,作者,保存到數(shù)據(jù)庫,把文章的真正的html保存為一個文件,然后根據(jù)url去加載本地的html。

注意

網(wǎng)站中用的所有技術可以交流學習

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

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

mongodb賬號密碼只有讀取權限

QQ交流群
133240225、 193572405

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

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

相關文章

  • segmentfault數(shù)據(jù) koa2vue全家,mongodb開發(fā)一個segmentf

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

    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項目

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

    newtrek 評論0 收藏0

發(fā)表評論

0條評論

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