JS也是有许多种样式的,在一些seo教程中也会讲到,那么,我们下面讲一讲关于NodeJS在seo中的一些应用,讲到了一些重点,对付大部门站长来说用处很是大。
NodeJS的缘故起因有3个,一是它的代码写法基于JS,较量轻易写。已经有入门级此外履历了。另一个就是它的一个库Cheerio,可以用险些和jQuery千篇一律的方法来操纵源码内里的Dom元素。
NodeJS是最近很是火的一个JS框架,百科的先容是轻量高效的基于变乱驱动的JS运行平台。
行使NodeJS的缘故起因有3个,一是它的代码写法基于JS,较量轻易写。seo教程已经有入门级此外履历了。另一个就是它的一个库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.
seo教程新建一个收罗.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('',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);