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


    日韩电影无码A不卡| 亚洲AV无码AV男人的天堂| 亚洲AV无码成人精品区在线观看| 中文字幕专区高清在线观看| 亚洲国产精品无码专区影院 | 成人无码A区在线观看视频| 婷婷色中文字幕综合在线 | 免费A级毛片无码视频| 亚洲欧美日韩中文字幕一区二区三区 | 久久无码人妻精品一区二区三区| 亚洲日产无码中文字幕| 日韩欧美一区二区三区中文精品| 亚洲一区二区三区无码影院| 国产成人AV无码精品| 无码专区狠狠躁躁天天躁| 中文精品久久久久人妻| 六月婷婷中文字幕| 伊人久久无码中文字幕| 亚洲?V无码乱码国产精品| 无码精品一区二区三区免费视频 | 亚洲VA中文字幕无码一二三区| 欧美成人中文字幕在线看| 99久久超碰中文字幕伊人| 精品久久久中文字幕人妻| 无码人妻精品一区二区三区99不卡 | 精品久久久久久久久久中文字幕| 中文字幕色AV一区二区三区| 久久无码人妻精品一区二区三区| 精品无码人妻久久久久久| 免费无码又爽又黄又刺激网站| 久久久无码精品午夜| 嫩草影院无码av| 狠狠躁天天躁中文字幕无码| 丝袜熟女国偷自产中文字幕亚洲| 婷婷色中文字幕综合在线 | 日韩AV无码中文无码不卡电影| 麻豆国产原创中文AV网站| 亚洲AV中文无码字幕色三| 中文精品一卡2卡3卡4卡| 中文字幕一区二区精品区| 狠狠干中文字幕|