小试 Node.JS 之 解析html
来源:互联网 发布:linux里sleep函数 编辑:程序博客网 时间:2024/05/21 14:45
最近弄了下node.js,写了个解析html来获取信息的demo。
初试手,那此blog来开刀了。。。。上代码先:
test.js ==>
这里添加了jquery库来支持html解析,先前要先安装哦:
$npm install jquery
这里对代码做一下解析:这里要实现的功能是,获取当前页面上博客目录的名称和链接地址,首先要先把整个页面的html获取,
options的参数分别是页面的资源域名,端口,路径;
前面定义的全局 html 变量意思为默认整个页面;
通过nodejs http模块的get方法来进行读取,同时开启了对数据的listern,当读取到数据时,触发‘data’;
当数据读取完毕,触发‘end’。所以解析将在数据读取完毕进行。
右键查看页面源码,要的就是若干段类似下面这段html代码中的href和文本内容:
通过 .find() 方法找到了div 节点下的 h3 再找到接下来的节点 span,
由于匹配出来的会是多个object,所以这里加了each,对每个object都做同样操作(拿出href的值,拿出文本内容,然后输出在终端)。
这里要注意的地方是那href值的时候,html已经分解到span这节点了,看上面html源码片段可知,span节点下面还挂了两个节点,我们要的是a这个节点,所以就有children('a'),再取出值。运行一下node test.js可以看到终端有预期的输出。
初试手,那此blog来开刀了。。。。上代码先:
test.js ==>
var $ = require('jquery');var http = require('http');var options = { host: 'blog.csdn.net', port: 80, path: '/lqg1122'};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和文本内容:
<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还挺好玩的哈,可以慢慢玩~
- 小试 Node.JS 之 解析html
- Node.Js cheerio模块--操作/解析Html
- node.js 小爬虫
- Node.js小示例
- node js 小爬虫
- node.js 小功能
- node.js URL解析
- Node.js详细解析
- node.js之小菜鸟的理解篇
- 多方位解析PHP vs Node.js之争
- 多方位解析PHP vs Node.js之争
- Node.Js中核心模块之文件系统解析
- Node.js 学习过程总结(二)之网页解析
- Node.js服务端初入门之POST解析
- node 之url 解析
- 小白入门node.js
- Node.js小Http服务器
- node.js入门小实例
- CF 246C Beauty Pageant
- How does Twitter Portlet in Liferay Marketplace work?
- 人生最重要的不是努力,是方向。
- 腾讯搞什么啊,一个比赛规则还三天两头变
- Twitter REST API and Streaming API
- 小试 Node.JS 之 解析html
- 数值的整数次方 和开根号
- 因为年轻,可以去闯北上广
- ios audio/avfoundaion blogs
- 草稿
- 设计模式(14)-行为型-命令模式(Command)
- Windows Presentation Foundation Introduction(I) - Overview
- 未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序。
- 程序员是否都要面对“换语言即淘汰”