node.js的request模块
request模块让http请求变的更加简单。最简单的一个示例:
   1: var request = require('request');
2:
   3: request('http://www.google.com', function (error, response, body) {
   4:   if (!error && response.statusCode == 200) {
5: console.log(body);
6: }
7: })
安装:
npm install request
可以用request的pipe方法很方便的获取图片的文件流
   1: var request = require('request'),
   2:     fs = require('fs');
3:
   4: request('https://www.google.com.hk/images/srpr/logo3w.png').pipe(fs.createWriteStream('doodle.png'));
request也支持OAuth的签名请求
更多使用方法和说明可点击这里继续阅读:https://github.com/mikeal/request/
这里写了一个很简单的示例,用来抓取去哪儿网的酒店查询数据(获取酒店某一时间段内各房型的价格排名):
   1: var request = require('request'),
   2:     fs = require('fs');
3:
4:
5: var reqUrl = 'http://hotel.qunar.com/price/detail.jsp?fromDate=2012-08-18&toDate=2012-08-19&cityurl=shanghai_city&HotelSEQ=shanghai_city_2856&cn=5';
6:
   7: request({uri:reqUrl}, function(err, response, body) {
8:
9: //console.log(response.statusCode);
10: //console.log(response);
11:
12: //如果数据量比较大,就需要对返回的数据根据日期、酒店ID进行存储,如果获取数据进行对比的时候直接读文件
13: var filePath = __dirname + '/data/data.js';
14:
  15:     if (fs.exists(filePath)) {
16: fs.unlinkSync(filePath);
17:
  18:         console.log('Del file ' + filePath);
19: }
20:
  21:     fs.writeFile(filePath, body, 'utf8', function(err) {
  22:         if (err) {
23: throw err;
24: }
25:
  26:         console.log('Save ' + filePath + ' ok~');
27: });
28:
  29:     console.log('Fetch ' + reqUrl + ' ok~');
30: });
这个例子源于一个做酒店业务的朋友,想知道自己在网站上提供给客户的价格的竞争力:
1、如果提供的价格过低,自己赚到的钱就会少了,所以如果自己价格是最低了,就需要看第二低是多少,然后决定是否调整;
2、如果提供的价格过高,那么被搜索出来的排名结果就比较靠后,没什么客户来预订酒店,业务就没有了
因为做的酒店预订业务很多,比如超过2千家以上,如果一个一个依赖人工去查询排名就比较被动,而且很难再做大,所以他的这个需求我分析了一下是可行的,而且可以做成一个很好的实时预警系统(当然数据5~10分钟会自动在页面刷新一次)。这样才能保障利润最大化,提高销售、客户部门的工作效率,加快酒店的合作数量和公司的人员扩张:
1、不亏本,亏本的买卖不做;
2、如果发现提供的价格过低或是过高,需要支持调用平台的api接口,直接修改价格;
3、有自动生成分析报表功能,分析竞争对手在价格调整策略上的变化情况;
node.js的request模块的更多相关文章
- 第5月第10天 node.js的request模块
		1.node.js的request模块 http://www.cnblogs.com/meteoric_cry/archive/2012/08/18/2645530.html 
- Node.js的Formidable模块的使用
		今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1) 创建Formidable.IncomingForm对象 var form = new formidab ... 
- node.js中express模块创建服务器和http模块客户端发请求
		首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ... 
- node.js的http模块的基础 学到的东西
		node.js的http模块的基础 学到的东西 其中客户端:我们在node.js中如果要请求服务端中的js或者其他脚本的话要使用http.request()方法他会返回http.ClientReque ... 
- 利用Node.js的Net模块实现一个命令行多人聊天室
		1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ... 
- Node.js入门:模块机制
		CommonJS规范 早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来 ... 
- Node.js的net模块
		net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简 ... 
- node.js中ws模块创建服务端和客户端,网页WebSocket客户端
		首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ... 
- node.js中net模块创建服务器和客户端(TCP)
		node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ... 
随机推荐
- php单双引号
			1.定义字符串 定义字符串时,只有一种引号被视为定义符,即单引号或双引号.于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析.这样,你就可以在双引号串中包含任何其他字符,甚至单引号.下面的引 ... 
- C#dynamic关键字(1)
			一.object,var,dynamic的区别 static void Main() { //var是C# 3中引入的,其实它仅仅只是一个语法糖. var本身并不是一种类型, 其它两者object和d ... 
- 让ASP.NET MVC不使用jsonp也可以跨域访问
			跨域问题仅仅发生在Javascript发起AJAX调用,或者Silverlight发起服务调用时,其根本原因是因为浏览器对于这两种请求,所给予的权限是较低的,通常只允许调用本域中的资源,除非目标服务器 ... 
- 无废话ExtJs 入门教程六[按钮:Button]
			无废话ExtJs 入门教程六[按钮:Button] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个按钮“提交”与重置.如下所示代码区的第68行位置, butt ... 
- 10g 11g配置Logical Standby
			1.创建一个物理Standby数据库 详细见11g Physical Standby配置 2.Standby数据库取消managed recovery ALTER DATABASE RECOVER ... 
- [LeetCode] Ugly Number
			Ugly Number Total Accepted: 20760 Total Submissions: 63208 Difficulty: Easy Write a program to check ... 
- Win10 开发者模式开启
			使用注册表方式:建立一个注册表DWORD为1键值:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock\AllowAllTrust ... 
- AgileEAS.NET SOA 中间件2013第四季度发布&部分功能开源预告
			一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ... 
- Ubuntu下配置samba实现文件夹共享
			转自:http://www.cnblogs.com/phinecos/archive/2009/06/06/1497717.html 一. samba的安装: sudo apt-get insall ... 
- Linux系统启动流程及安装命令行版本
			Debian安装 之前也安装过很多次linux不同版本的系统,但安装后都是直接带有桌面开发环境的版本,直接可以使用,正好最近项目不是很忙,想一直了解下Linux的整个启动流程,以及如何从命令行模式系统 ... 
