<code id="6mcsu"></code>
<li id="6mcsu"></li>
<li id="6mcsu"><dl id="6mcsu"></dl></li>
  • <code id="6mcsu"><tr id="6mcsu"></tr></code>
    或者

    NodeJS在SEO中的應(yīng)用

    作者:聚擎 瀏覽:163 發(fā)布時間:2017-10-28
    分享 評論 0

     NodeJS是最近非常火的一個JS框架,百科的介紹是輕量高效的基于事件驅(qū)動的JS運行平臺。

     

      使用NodeJS的原因有3個,一是它的代碼寫法基于JS,比較容易寫。已經(jīng)有入門級別的經(jīng)驗了。另一個就是它的一個庫Cheerio,可以用幾乎和jQuery一模一樣的方式來操作源碼里面的Dom元素。這個什么意思稍候會講。第三個是它可以做為本地端,也可以布到服務(wù)器上去。

     

      這2天研究比較多,應(yīng)該算是初級入門了。正好有個需求要處理,于是應(yīng)用了NodeJS。

     

      一、安裝

     

      網(wǎng)上有很多的教程,下載到https://nodejs.org,在Win系統(tǒng)下運行就可以搭上一個環(huán)境。下載Windows的Installer版本,雙擊安裝,就成功了。

     

      然后配置神器Sublime開始使用。

     

      為Sublime添加實時調(diào)試運行,打開Sublime-》Tools-》Build System-》New Build System

     

      在新打開的文件中寫入下面的代碼

      {

      "cmd": ["node", "$file"],

      "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

      "selector": "source.javascript"

      }

      然后保存為NodeJS.sublime-build.

     

      新建一個采集.js文件,設(shè)為NodeJS進(jìn)行運行調(diào)試。

      

    1

      二、注意

     

      在nodejs里面需要require(庫名)的方式來引用一些外部的庫,這些外部的庫安裝NodeJS的時候,已經(jīng)放在C盤的programfiles下面了。但是直接require是無效的。

     

      因為NodeJS提倡的是自己的代碼用自己的庫,所以還需要把庫復(fù)制到采集.js這個文件下面。

     

      引用的時候可以通過npm link 庫名的方式,來把系統(tǒng)C盤的庫引用到我們的項目下面。

      

    2

      三、直接使用了

     

      //采集頁面內(nèi)容到本地

      var http = require("http");

      var cheerio = require('cheerio'); //引用cheerio模塊,使在服務(wù)器端像在客戶端上操作DOM,不用正則表達(dá)式,據(jù)基準(zhǔn)測試:cheerio大約比JsDom快8倍。

      var iconv = require('iconv-lite'); //解決編碼轉(zhuǎn)換模塊

      var BufferHelper = require('bufferhelper'); //關(guān)于Buffer我后面細(xì)說

      var data=download('http://blog.csdn.net/kissliux/article/details/20466889',function (data) {

      //console.log(data);

      var $=cheerio.load(data);//載入到cheerio進(jìn)行分析

      //遍歷DIV

      // $('a').each(function(i,e){

      // console.log($(e).attr('href'));

      // });

      // 遍歷鏈接

      // $("a.downbtn").each(function(i, e) {

      // console.log($(e).attr("href"));

      // });

      //var title=$('head>title').text();//讀取Title信息

      //console.log(title);

      //分析得到頁面基本信息

      var page = {

      "document": {

      title: $('head>title').text(),

      meta: {

      title: $('meta[property="og:title"]').attr("content"),

      author: $('meta[property="og:author"]').attr("content"),

      description: $('meta[name="description"]').attr("content"),

      url: $('meta[property="og:url"]').attr("content"),

      type: $('meta[property="og:type"]').attr("content"),

      image: $('meta[property="og:image"]').attr("content")

      },

      "content": undefined,

      "images": []

      }

      };

      //采集圖片存入列表

      $('img').each(function(){

      var url = $(this).attr('src');

      if (page.document.images.indexOf(url) === -1){

      page.document.images.push(url);

      }

      });

      console.log(page);

      });

      /**

      * 下載源碼,自動識別編碼

      * @param {[type]} url [下載URL]

      * @param {Function} callback [回調(diào)]

      * @return {[type]} [description]

      */

      function download(url, callback) {

      http.get(url, function(res) {

      var data = "";

      res.on('data', function (chunk) {

      data += chunk;

      });

      res.on("end", function() {

      callback(data);

      });

      }).on("error", function(e) {

      console.log("Got error: " + e.message);

      callback(null);

      });

      }

     

      上面我封好了download下載Html的內(nèi)容。并進(jìn)行處理的簡單示例。注意require的庫必須使用npm link 庫名克隆到本地,或者自己下載包放到采集.js下面的node_modules目錄下面,如果 沒有這個目錄,自己創(chuàng)建。

     

      其中:

     

      使用Cheerio要取頁面的H1標(biāo)題就簡單了

     

      var title=$('#article_details h1 a').text().trim();//讀取Div下面的H1標(biāo)簽文本。

     

      有沒有jQuery強到爆的感覺。想分析頁面什么的,還用正則嗎?不用了。還用分析嗎?不用了。找個大的Div,直接就讀出來了。C#當(dāng)然也可以用Htmp Agility pack來解析Dom。

     

      但是為此我要新建一個項目,運行,調(diào)試,用NodeJS的話,在Sublime里面按Ctrl+B直接運行,可以馬上看到效果。而且可以放到服務(wù)端。放到我的服務(wù)器上去。諸多好處也不大好形容。如果會點JS代碼的話,上手應(yīng)該非???。

     

      下面是運行效果

      

    3

      后面我把功能完善一點之后,會分享更完整的功能,讀取文件中的URL采集,采集內(nèi)容之后內(nèi)容清洗,放進(jìn)數(shù)據(jù)庫或者導(dǎo)出文件。


    欧美日本中文字幕| 日本高清不卡中文字幕免费| 天堂新版8中文在线8| 无码视频在线观看| 中文字幕天天躁日日躁狠狠躁免费| 无码日韩人妻精品久久蜜桃| 色综合久久最新中文字幕| 国产乱人无码伦av在线a| 无码av人妻一区二区三区四区| 欧美乱人伦中文字幕在线| 久久久久亚洲av无码专区喷水 | 色综合久久无码五十路人妻| 中文字幕高清有码在线中字| 国产精品无码无卡无需播放器| 久久精品亚洲AV久久久无码| 少妇中文字幕乱码亚洲影视| 免费a级毛片无码免费视频120软件| 亚洲色偷拍另类无码专区| 中文字幕一区二区三区在线观看 | 国产网红主播无码精品| 成人午夜亚洲精品无码网站| 免费无码中文字幕A级毛片| 国产仑乱无码内谢| 国产在线精品无码二区| 无码国产69精品久久久久网站| 蜜桃AV无码免费看永久| 亚洲一区日韩高清中文字幕亚洲| 中文字幕亚洲欧美日韩在线不卡| 久久精品无码一区二区app| 国产拍拍拍无码视频免费| 久久久久久久亚洲Av无码| 无码孕妇孕交在线观看| 亚洲精品无码久久一线| 国产精品99久久久精品无码| 中文字幕无码久久久| 亚洲日韩VA无码中文字幕| 日本乱偷人妻中文字幕在线| 久久久久亚洲精品中文字幕| 99re只有精品8中文| 中文字幕无码久久精品青草| 中文字幕日韩精品有码视频|