NODE学习:利用nodeJS去抓网页的信息
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去抓网页的信息的更多相关文章
- NodeJS + PhantomJS 抓取页面信息以及截图
利用PhantomJS做网页截图经济适用,但其API较少,做其他功能就比较吃力了.例如,其自带的Web Server Mongoose最高只能同时支持10个请求,指望他能独立成为一个服务是不怎么实际的 ...
- Nodejs全站开发学习系列 & 深入浅出Node学习笔记 & Spider抓取
https://course.tianmaying.com/node 这个系列的文章看起来很不错,值得学习一下. /Users/baidu/Documents/Data/Interview/Web-S ...
- (转)利用Beautiful Soup去抓取p标签下class=jstest的内容
1.利用Beautiful Soup去抓取p标签下class=jstest的内容 import io import sys import bs4 as bs import urllib.request ...
- python抓网页数据【ref:http://www.1point3acres.com/bbs/thread-83337-1-1.html】
前言:数据科学越来越火了,网页是数据很大的一个来源.最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,python)都可以实现抓网页数据,甚至很多统计\计算的语言(R,Matla ...
- python爬虫抓网页的总结
python爬虫抓网页的总结 更多 python 爬虫 学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自 ...
- 用Python抓网页的注意事项
用Python编一个抓网页的程序是非常快的,下面就是一个例子: import urllib2 html = urllib2.urlopen('http://blog.raphaelzhang.com' ...
- node.js基础模块http、网页分析工具cherrio实现爬虫
node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言 说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherri ...
- 2015第40周一Node学习
node学习尝试 早上看了张丹大牛博客文章nodeJS学习路线图和node从零入门系列,感觉获益匪浅,尝试了里面几项内容,对node有了更深入的认识. npm npm是一个node包管理和分发工具,已 ...
- Node.app让Nodejs平台在iOS和OS X系统上奔跑
首先呢,欢迎大家去查看相同内容的链接:http://www.livyfeel.com/nodeapp/. 由于那个平台我用的markdown语法,我也懒得改动了,就这样黏贴过来了. 这是一个惊人的恐怖 ...
随机推荐
- 作为一个测试leader平时应该注意哪些方面
平时对管理方面很少有总结,总觉得管理是一门艺术,一门需要意会的艺术,虽然目前在做测试leader,平时也看些管理方面的书,但实际中总感觉理解的不够透彻,在工作上实施的话会有各种各样的情况,想要做好管理 ...
- jemter的使用(三)
前面的文章已经把接口请求.响应等前序工作做好,那么如何施加压力呢,看下面 1.点击线程组,设置线程属性,其中:线程数即并发用户数,ramp-up period是多长时间初始化上面的并发用户数,循环次数 ...
- 苹果手机 微信调用百度地图Javascript API 频繁闪退问题
最近在网页中调用百度地图API js大众版,但是在IOS8系统中,缩放的时候频繁闪退,安卓手机没有这个问题! 在网上查询了下,有网友回答说不要频繁的去new marker,而是初始化话一定量的mark ...
- css3中box-flex的使用
语法: box-flex:<number> 其中number取值:使用浮点数指定对象所分配其父元素剩余空间的比例.设置或检索伸缩盒对象的子元素如何分配其剩余空间. html代码: < ...
- Unity3d+Jenkins 自动编译iOS、Android版本
1.在Unity3d中, 创建导出 iOS.Android 项目脚本 PerformBuild.cs ,放在Editor目录下(必须),如下: using UnityEditor; using Sys ...
- Unity脚本生命周期
前言 说到生命周期,影响最深刻的是,在接触Java的JSF组件时,JSF组件的五大生命周期,全要默写出来,嘿嘿…… 总结这两天在写小怪和掉落的糖葫芦时,老是遇到GameObject未销毁,一直存在场景 ...
- svn分支开发与主干合并(branch & merge)
下面我将step by step地演示如何一次完整的branching和merging,包括创建分支.分支开发.分支和主线同步,分支合并到主线的全过程,甚至包括如何在本地创建一个测试用的reposit ...
- .NET深入 c#数据类型2
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- java 静态方法和实例方法的区别
转自 java 静态方法和实例方法的区别 静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法 ...
- Volley(三)—— ImageRequest & Request简介
Volley(三)—— ImageRequest & Request简介 上 篇文章我们讲 到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型 ...