1:引用模块"http" (执行命令node app.js "http://www.baidu.com")

//app.js
var http = require('http');
var url = require('url'); function spider(u,cb){
http.get( url.parse(u), function(res){
var d = ''
res.on('data',function(chunk){
d += chunk;
})
res.on('end',function(){
console.log('spider_end && do cb');
cb(d);
})
});
};
var u = "";
if( require.main === module ) {
u = process.argv[2]
};
spider(u,function( data ){
  //这个返回的是网页内容的信息;
console.log( data );
});

2:引用模块nodegrass: (执行命令node app.js "http://www.baidu.com")

//app.js
var url = "http://www.cnblogs.com/xiaochao12345/archive/2014/10/23/4044950.html";
var ng = require('nodegrass'); if(require.main === module) {
console.log( process.argv );
url = process.argv[2];
}
ng.get(url,function(data){
  //这个返回的是网页内容的信息;
console.log(data); },'utf8');

3:引用模块superagent: (执行命令node app.js "http://www.baidu.com")

//app.js
var url = "http://www.cnblogs.com/xiaochao12345/archive/2014/10/23/4044950.html";
var superagent = require("superagent"); if(require.main === module) {
console.log( process.argv );
url = process.argv[2];
};
superagent.get(url)
.end(function (err, res) {
console.log('fetch successful');
console.log(res);
});

4:使用curl模块:(执行命令node app.js "http://www.baidu.com")

//app.js
var curl = require("curl"); var u = ""; if( require.main === module ) {
u = process.argv[2]
}; curl.get(u,function( data ){
console.log( arguments );
});

______________________________________________________________________________________________________________

NODEJS中处理dom节点的方式(接口都和jq是统一的);

1:引用cheerio

var cheerio = require("cheerio");

var html = "<html><body><div id=\"div1\">text</div></body></html>";

var $ = cheerio.load(html);

console.log( "html" );
console.log( $.html() ); console.log( "#div1————〉html" );
console.log( $("#div1").html() ); console.log( "#div1----〉text" );
console.log( $("#div1").text() );

2:引用jquery

var $ = require("jquery");

var $dom = $("<html><body><div id=\"div1\">text</div></body></html>");

console.log( $dom.find("#div1").text() );

3:引用jsdom

var jsdom = require('jsdom');
var curl = require("curl");
var u = "https://github.com"; if( require.main === module ) {
u = process.argv[2];
}; curl.get(u,function( arg0 , html ){
//jsdom相当于打开了一个页面,在这个页面里面运行js;
var document = jsdom.jsdom( html.body );
for(var a in html)
console.log(a); var window = document.createWindow();
var script = document.createElement('script'); //script.src = 'http://code.jquery.com/jquery-1.4.2.js';
script.src = "http://127.0.0.1:81/js/jquery.min.js";
script.onload = function(){
console.log(1);
console.log( window.jQuery("body").text() );
}; document.head.appendChild( script );
});

_________________________________________________________________________________________________________________

文件保存的话直接用nodeJS中的fs模块:

var fs = require("fs");

fs.appendFile('file-name', "text_text_text_text" ,function(err){
if(err)throw err;
console.log('done')
});

NODE学习:利用nodeJS去抓网页的信息的更多相关文章

  1. NodeJS + PhantomJS 抓取页面信息以及截图

    利用PhantomJS做网页截图经济适用,但其API较少,做其他功能就比较吃力了.例如,其自带的Web Server Mongoose最高只能同时支持10个请求,指望他能独立成为一个服务是不怎么实际的 ...

  2. Nodejs全站开发学习系列 & 深入浅出Node学习笔记 & Spider抓取

    https://course.tianmaying.com/node 这个系列的文章看起来很不错,值得学习一下. /Users/baidu/Documents/Data/Interview/Web-S ...

  3. (转)利用Beautiful Soup去抓取p标签下class=jstest的内容

    1.利用Beautiful Soup去抓取p标签下class=jstest的内容 import io import sys import bs4 as bs import urllib.request ...

  4. python抓网页数据【ref:http://www.1point3acres.com/bbs/thread-83337-1-1.html】

    前言:数据科学越来越火了,网页是数据很大的一个来源.最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,python)都可以实现抓网页数据,甚至很多统计\计算的语言(R,Matla ...

  5. python爬虫抓网页的总结

    python爬虫抓网页的总结 更多 python 爬虫   学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自 ...

  6. 用Python抓网页的注意事项

    用Python编一个抓网页的程序是非常快的,下面就是一个例子: import urllib2 html = urllib2.urlopen('http://blog.raphaelzhang.com' ...

  7. node.js基础模块http、网页分析工具cherrio实现爬虫

    node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言      说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherri ...

  8. 2015第40周一Node学习

    node学习尝试 早上看了张丹大牛博客文章nodeJS学习路线图和node从零入门系列,感觉获益匪浅,尝试了里面几项内容,对node有了更深入的认识. npm npm是一个node包管理和分发工具,已 ...

  9. Node.app让Nodejs平台在iOS和OS X系统上奔跑

    首先呢,欢迎大家去查看相同内容的链接:http://www.livyfeel.com/nodeapp/. 由于那个平台我用的markdown语法,我也懒得改动了,就这样黏贴过来了. 这是一个惊人的恐怖 ...

随机推荐

  1. GoLang 的 daemonize 实现

    func daemonize(cmd string, args []string, pipe io.WriteCloser) error { pid, _, sysErr := syscall.Raw ...

  2. 《TCP/IP详解 卷一》读书笔记-----TCP persist &Keeplive timer

    1.persist timer:当接收方建议的窗口大小为0时,发送方就会停止发送,直到接收方有缓存空间时再用一个窗口值非零的ACK提示发送方可以继续发送.但是这个称为window update的ACK ...

  3. 【读书笔记《Android游戏编程之从零开始》】10.游戏开发基础(View 游戏框架)

    对于玩家来说,游戏是动态的:对于游戏开发人员来说,游戏是静态的,只是不停地播放不通的画面,让玩家看到了动态的效果. 进入Android之前,首先要熟悉三个重要的类:View(视图).Canvas(画布 ...

  4. 平摊分析 Amortized Analysis ------geeksforgeeks翻译

    当偶尔一切操作很花的时间很慢,而大多数操作的时间都很快的时候,平摊分析的方法就很很好用了.在平摊分析中,我们分析一串操作并且可以得到最坏情况下的平均时间复杂度.例如hash table, disjoi ...

  5. HDU 2065 “红色病毒”问题 --指数型母函数

    这种有限制的类棋盘着色问题一般可以用指数型母函数来解决,设Hn表示这样的着色数,首先H0=1,则Hn等于四个字母的(A,B,C,D)的多重集合的n排列数,其中每个字母的重数是无穷,且要求A,C出现的次 ...

  6. MySQL数据库学习笔记(五)----MySQL字符串函数、日期时间函数

    一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左 ...

  7. Linux下php安装memcache扩展

    安装环境:CentOS 6.4 php扩展memcache的作用是为了支持memcached数据库缓存服务器,下面是安装方法. 1.下载 下载地址:http://pecl.php.net/packag ...

  8. eclipse android 不会自动生成R.java文件和包的解决办法

    eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法   我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动 ...

  9. You are note Hk

    直接打开是forbidden  最后一句话提示 于是改包 第二次还是修改包 Mozilla/5.0 (MSIE 7.0; Windows NT 6.0;.NET CLR 9.9)

  10. Android的Style的使用

    Style个人理解就是view的一些属性的集合,那么一系列view(例如TextVIew),只要是要该style那么就都有相同的内容,如 文字的大少,颜色等,方便修改 首先最基本的使用,多个textV ...