小试 Node.JS 之 解析html
最近弄了下node.js,写了个解析html来获取信息的demo。
初试手,那此blog来开刀了。。。。上代码先:
test.js ==>
[javascript]
var $ = require('jquery');
var http = require('http');
var options = {
host: 'blog.csdn.net',
port: 80,
path: '/lqg1122'
}; www.zzzyk.com
var html = '';
http.get(options, function(res) {
res.on('data', function(data) {
// collect the data chunks to the variable named "html"
html += data;
}).on('end', function() {
// the whole of webpage data has been collected. parsing time!
var title = $(html).find('div h3 span').each(function($this){
var a = $(this).children('a').attr('href');
var b = $(this).children('a').text();
console.log(b + ":" + options.host + a);
});
console.log("over");
});
});
这里添加了jquery库来支持html解析,先前要先安装哦:
$npm install jquery
这里对代码做一下解析:这里要实现的功能是,获取当前页面上博客目录的名称和链接地址,首先要先把整个页面的html获取,
options的参数分别是页面的资源域名,端口,路径;
前面定义的全局 html 变量意思为默认整个页面;
通过nodejs http模块的get方法来进行读取,同时开启了对数据的listern,当读取到数据时,触发‘data’;
当数据读取完毕,触发‘end’。所以解析将在数据读取完毕进行。
右键查看页面源码,要的就是若干段类似下面这段html代码中的href和文本内容:
[html]
<div id="article_list" class="list">
<div class="list_item article_item">
<div class="article_title">
<span class="ico ico_type_Original"></span>
<h3>
<span class="link_title"><a href="/lqg1122/article/details/8172645">
利用 Jekyll-Bootstrap 搭建 github blog 简单记录
</a></span>
</h3>
</div>
通过 .find() 方法找到了div 节点下的 h3 再找到接下来的节点 span,
由于匹配出来的会是多个object,所以这里加了each,对每个object都做同样操作(拿出href的值,拿出文本内容,然后输出在终端)。
这里要注意的地方是那href值的时候,html已经分解到span这节点了,看上面html源码片段可知,span节点下面还挂了两个节点,我们要的是a这个节点,所以就有children('a'),再取出值。运行一下node test.js可以看到终端有预期的输出。
感觉node.js还挺好玩的哈,可以慢慢玩~
补充:web前端 , JavaScript ,