NodeJS在SEO中的应用:快速采集分析页面
一、安装
网上有很多的教程,下载到>
然后配置神器Sublime开始使用。
为Sublime添加实时调试运行,打开Sublime-》Tools-》Build System-》New Build System
然后保存为NodeJSsublime-build
新建一个采集js文件,设为NodeJS进行运行调试。
二、注意
在nodejs里面需要require(库名)的方式来引用一些外部的库,这些外部的库安装NodeJS的时候,已经放在C盘的programfiles下面了。但是直接require是无效的。
因为NodeJS提倡的是自己的代码用自己的库,所以还需要把库复制到采集js这个文件下面。
引用的时候可以通过npm link 库名的方式,来把系统C盘的库引用到我们的项目下面。
三、直接使用了
注意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代码的话,上手应该非常快。
第一步,用node输出一个hello world
大部分的node教程在这里会告诉你,我们很容易的建立的一个服务器。但是在实际使我们通常使用的是express(fk,难道Node必须要用express吗?自己实现一个Web应用框架真的很难吗?)其实并不是。
那么既然打算自己写我们首先要知道我们要做哪些事情。 1路由或者智能路由 2静态文件输出 3session/cookie 4模版渲染 5数据库处理 6文件上传
第二步,路由
路由好高大上的名字,它是干啥的?url对应具体方法就是它该做的事情。 那么我们为什么不让url对应xxx文件的xx方法。 例如:/user/login能不能自动对应到userjs的login方法上。实现起来很难么?其实只需要几句代码
moduleexports=function(req,res){
var query=reqquery;
var urlPares=requrlPares;
var pathname=urlParespathname;
var arr=pathnamesplit("/");
reqarr=arr;
//start 这段代码处理默认行为。可以先忽略
if(arrlength==0||arrlength==1){
arr=["","index","index"];
}else if(arrlength==2){
arrpush("index");
}
if(arr[1]==""){
arr[1]="index";
}
if(arr[2]==""){
arr[2]="index";
}
//end 这段代码处理默认行为。可以先忽略
if (fsexistsSync(APP_PATH+'/controller/'+arr[1]+'js')){
var controller=require('/controller/'+arr[1]);
if(controller[arr[2]]){
controller[arr[2]](req,res);
}else{
reswriteHead(404,{'Content-Type': 'text/plain' });
resend("你访问的控制器不存在指定方法");
}
}else{
reswriteHead(404,{'Content-Type': 'text/plain' });
resend("你访问的路径不存在");
}
}
通过fs判断文件是否存在。然后去require它就行了。APP_PATH是个全局变量表示程序入口的路径。
第三步,静态文件输出
静态文件输出我们需要一个库MIME
var fs = require("fs");
var mime = require('mime');
/
[[检测是否为静态资源]]
@param {Object} req [[Description]]
@param {[[Type]]} res [[Description]]
@returns {bool} [[Description]]
/
moduleexports = function (req, res) {
//正则表达式检测文件后缀
var url_resource_reg = /\(html|htm|gif|jpg|jpeg|bmp|webp|htc|swf|png|ico|txt|js|css)/;
if (!url_resource_regtest(requrl)) {
return false;
}
var urlPares = urlparse(requrl);
var pathname = urlParespathname;
var fileUrl = APP_PATH + "/static" + pathname;
if (fsexistsSync(fileUrl)) {
var contentType = mimelookup(fileUrl);
ressetHeader('Content-Type', contentType || "text/plain");
var fileStream = fscreateReadStream(fileUrl);
fileStreampipe(res);
fileStreamon('end', function () {
resend();
});
return true;
} else {
return false;
}
}
第四步,session/cookie
这里稍微有点。但是代码量也不多
var sessions = {};
var sessionKey = 'session_key';
var EXPIRES = 30 60 1000;
function randString(size) {
var result = '';
var allChar = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
size = size || 1;
while (size--) {
result += allCharcharAt(rand(0, allCharlength - 1));
}
return result;
}
var generate = function () {
var session = {};
sessionid = Datenow() + randString(12);
sessioncookies = {
expire: Datenow() + EXPIRES
}
sessions[sessionid] = session;
return session;
}
var parseCookie= function (cookie) {
var cookies = {};
if (!cookie) {
return cookies;
}
var list = cookiesplit(";");
for (var i = 0; i < listlength; i++) {
var pair = list[i]split("=");
cookies[pair[0]trim()] = pair[1];
}
return cookies;
}
var serializeCookies = function (cookies) {
var arr = [];
for (var key in cookies) {
arrpush(serialize(key, cookies[key]));
}
return arr;
}
var serialize = function (name, value, option) {
var pairs = [name + '=' + encodeURI(value)];
//设置cookie默认共用"/"路径
option = option || {
path: "/"
};
if (optionmaxAge) pairspush('Max-Age=' + optionmaxAge);
if (optiondomain) pairspush('Domain=' + optiondomain);
if (optionpath) pairspush('Path=' + optionpath);
if (optionexpires) pairspush('Expires=' + optionexpires);
if (option> }
第五步,模版渲染
这是最简单的。
第六步,数据库处理
这里可以是用一些ORM框架。
第七步,文件上传,post
第八步,就是你把上面的代码组织起来。
1安装NodeJS 1编译环境 源代码编译器,通常 Unix/Linux平台都自带了C++的编译器(GCC/G++)。如果没有,请通过当前发行版的软件包安装工具安装make,g++这些编译工具。 Debian/Ubuntu下的工具是apt-get RedHat/centOS下通过yum命令 Mac OS X下欢迎分享,转载请注明来源:内存溢出
评论列表(0条)