<ul id="g60s4"><pre id="g60s4"></pre></ul>
<strong id="g60s4"><nav id="g60s4"></nav></strong>
<ul id="g60s4"></ul>
  • <tr id="g60s4"></tr>
  • 
    
  • 或者

    NodeJS在SEO中的應用

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

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

     

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

     

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

     

      一、安裝

     

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

     

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

     

      為Sublime添加實時調試運行,打開Sublime-》Tools-》Build System-》New Build System

     

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

      {

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

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

      "selector": "source.javascript"

      }

      然后保存為NodeJS.sublime-build.

     

      新建一個采集.js文件,設為NodeJS進行運行調試。

      

    1

      二、注意

     

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

     

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

     

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

      

    2

      三、直接使用了

     

      //采集頁面內容到本地

      var http = require("http");

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

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

      var BufferHelper = require('bufferhelper'); //關于Buffer我后面細說

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

      //console.log(data);

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

      //遍歷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 [回調]

      * @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的內容。并進行處理的簡單示例。注意require的庫必須使用npm link 庫名克隆到本地,或者自己下載包放到采集.js下面的node_modules目錄下面,如果 沒有這個目錄,自己創建。

     

      其中:

     

      使用Cheerio要取頁面的H1標題就簡單了

     

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

     

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

     

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

     

      下面是運行效果

      

    3

      后面我把功能完善一點之后,會分享更完整的功能,讀取文件中的URL采集,采集內容之后內容清洗,放進數據庫或者導出文件。


    国产麻豆精品一区二区三区v视界| 亚洲处破女AV日韩精品| 久久亚洲精品成人综合| 精品久久国产一区二区三区香蕉| 亚洲日韩精品无码专区| 国产午夜精品福利| 日韩精品中文乱码在线观看| 亚洲综合久久精品无码色欲| 久久精品国产免费观看三人同眠| 老汉精品免费AV在线播放| 免费91麻豆精品国产自产在线观看| 精品亚洲一区二区三区在线播放| 国产AV国片精品一区二区| 日韩大乳视频中文字幕| 91精品日韩人妻无码久久不卡| 国产精品亚洲精品日韩已方| 国产精品国产三级国产普通话一 | 亚洲精品国产日韩无码AV永久免费网 | 精品国产日韩久久亚洲| 久久精品国产久精国产果冻传媒| 久久亚洲精品无码AV红樱桃| 久久精品亚洲日本佐佐木明希| 日本精品卡一卡2卡3卡四卡| 国产精品无码一区二区三级| 国内精品久久久久伊人av| 亚洲精品无码不卡在线播HE| 97在线精品视频| 成人区精品人妻一区二区不卡| 中文字幕精品亚洲无线码一区| 亚洲色精品vr一区二区三区| 国产在线拍揄自揄视精品不卡 | 91大神精品全国在线观看| 亚洲第一精品电影网| 亚洲精品一区二区三区四区乱码| 91精品日韩人妻无码久久不卡| 亚洲国产成人久久99精品| 精品乱码久久久久久久| 精品国产无限资源免费观看| 69国产成人综合久久精品| 99久久这里只精品国产免费| 精品人妻系列无码人妻漫画|