<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中的應用

    作者:聚擎 瀏覽: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采集,采集內容之后內容清洗,放進數據庫或者導出文件。


    中文字幕亚洲乱码熟女一区二区 | 久久精品?ⅴ无码中文字幕| 中文人妻无码一区二区三区| 亚洲一区二区三区无码影院| 亚洲av成人无码久久精品| 亚洲一区二区三区在线观看精品中文| 亚洲AV日韩AV永久无码绿巨人| 中文字幕日韩精品无码内射| 国产精品三级在线观看无码| 成人无码A区在线观看视频| 亚洲天堂中文字幕| 无码日韩精品一区二区人妻| 亚洲中文字幕伊人久久无码| 亚洲AV中文无码字幕色三| 亚洲精品欧美二区三区中文字幕| 中文字幕无码久久精品青草| 精品久久久久久无码中文野结衣| 亚洲AV日韩AV永久无码久久| 无码福利一区二区三区| 欧美日韩中文国产一区| 日本公妇在线观看中文版| 精品无码综合一区| 99热门精品一区二区三区无码| 久久青青草原亚洲av无码app| 亚洲一区爱区精品无码| 在线观看片免费人成视频无码| 久久丝袜精品中文字幕| www日韩中文字幕在线看| 日韩欧美中文亚洲高清在线| 人妻无码人妻有码中文字幕| 日韩亚洲欧美中文在线| 亚洲无码视频在线| 亚洲高清无码综合性爱视频| 中文字幕无码播放免费| 中文字字幕在线一本通| 亚洲乱亚洲乱少妇无码| 一本一道av中文字幕无码| 亚洲中文字幕无码久久2017| 人妻丝袜中文无码av影音先锋专区| 亚洲国产a∨无码中文777| 中文字幕天天躁日日躁狠狠躁免费|