蜗牛:NodeJS在SEO中的运用

seo问答评论4阅读模式
摘要

NodeJS的缘故起因有3个,一是它的代码写法基于JS,较量轻易写。已经有入门级此外履历了。另一个就是它的一个库Cheerio,可以用险些和jQuery千篇一律的方法来操纵源码

  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举办运行调试。

  

  二、留意

  在nodejs内里必要require(库名)的方法来引用一些外部的库,这些外部的库安装NodeJS的时辰,已经放在C盘的programfiles下面了。可是直接require是无效的。

  由于NodeJS倡导的是本身的代码用本身的库,以是还必要把库复制到收罗.js这个文件下面。

  引用的时辰可以通过npm link 库名的方法,来把体系C盘的库引用到我们的项目下面。

  

  三、直接行使了

  //收罗页面内容到当地

  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代码的话,上手应该很是快。

  下面是运行结果

  

  后头我把成果完美一点之后,会分享更完备的成果,读取文件中的URL收罗,收罗内容之后内容洗濯,放进数据库可能导出文件。

懂懂日记:当演员的日子

朋友的朋友的朋友开发了个项目,文化小镇,在一个兔子不拉屎的偏远农村,提出了乡村+文化+旅游的概念,获得了N多大奖,上过N次电视。 也获得了N多资金扶持,为嘛

蒲公英博客
  • 本文由 发表于 2024年11月23日 12:38:35
  • 转载请务必保留本文链接:https://www.yjro.com/7694.html

发表评论