尤物视频在线观看|国产尤物视频在线观看|99热在线获取最新地址,久久频这里精品99香蕉久,国产色婷婷精品综合在线,亚洲欧美日韩高清在线看

NodeJS在SEO中的應用

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

 NodeJS是最近非?;鸬囊粋€JS框架,百科的介紹是輕量高效的基于事件驅(qū)動的JS運行平臺。

 

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

 

  這2天研究比較多,應該算是初級入門了。正好有個需求要處理,于是應用了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進行運行調(diào)試。

  

1

  二、注意

 

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

 

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

 

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

  

2

  三、直接使用了

 

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

  var http = require("http");

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

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

  var BufferHelper = require('bufferhelper'); //關(guān)于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 [回調(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)容。并進行處理的簡單示例。注意require的庫必須使用npm link 庫名克隆到本地,或者自己下載包放到采集.js下面的node_modules目錄下面,如果 沒有這個目錄,自己創(chuàng)建。

 

  其中:

 

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

 

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

 

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

 

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

 

  下面是運行效果

  

3

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