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

資訊專欄INFORMATION COLUMN

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

aaron / 3377人閱讀

摘要:注意網(wǎng)站中用的所有技術(shù)可以交流學(xué)習(xí)不要以線上環(huán)境運(yùn)行,因?yàn)樵创a中沒有包含相關(guān)文件中的,授權(quán)登陸需要自己配置賬號(hào)密碼只有讀取權(quán)限交流群

前言

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

技術(shù)棧

服務(wù)器: node、koa2

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

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

打包: webpack

網(wǎng)站模塊

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

同時(shí)需要注意處理爬取圖片的處理

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

登錄注冊(cè)模塊: 支持用戶的登錄注冊(cè),接入第三方登錄接口,注冊(cè)采用nodemailer模塊進(jìn)行郵箱驗(yàn)證

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

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

爬蟲模塊

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

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

、所以我在爬取圖片的時(shí)候就需要處理特殊符號(hào),和加后綴

let imgError = false, imgPath = (imgSavePath + src).replace(/?|&/g, "_");
//替換特殊符號(hào)
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);
        //在響應(yīng)頭中獲取文件后綴                                
        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("請(qǐng)求圖片失?。?"+ (_src||src)+ " 來(lái)至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+ " 來(lái)至url: "+ url, true);
                reject2(url);
            }
        }
    });

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

注意

網(wǎng)站中用的所有技術(shù)可以交流學(xué)習(xí)

不要以線上環(huán)境運(yùn)行,因?yàn)樵创a中沒有包含https相關(guān)文件

config.js中的github,qq授權(quán)登陸需要自己配置

mongodb賬號(hào)密碼只有讀取權(quán)限

QQ交流群
133240225、 193572405

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/112463.html

相關(guān)文章

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

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

    ChristmasBoy 評(píng)論0 收藏0
  • vue2全家+koa2+mongodb搭建一個(gè)簡(jiǎn)單偽全棧博客

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

    bitkylin 評(píng)論0 收藏0
  • 阿里云centOS部署vue全家+node+koa2+mongo項(xiàng)目

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

    newtrek 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<