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(" ...
随机推荐
- java 中的一个项目如何做到访问另一个项目的一个方法 或者 页面
两种方法:1.将一个项目打成jar包,第二个项目进行导入该jar包,就可以使用第一个项目里的类方法属性等2.将第一个项目发布出去,然后第二个项目调用,所谓发布出去就是开发远程接口,允许其他人调用.
- 公众号开发——测试工具【ngrok】
工具下载:ngrok 目录清单: ngrok.exe ngrok.cfg run.bat 点击bat启动. 可修改域名,右键bat文件修改. 成功效果图: 注:80端口被占用了怎么办? —— ...
- android:installLocation = "auto" 的用法
在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置. android:inst ...
- Python win32api提取exe图标icon
转载地址: http://blog.csdn.net/gumanren/article/details/6129416 代码如下: # -*- coding: utf-8 -*- import sys ...
- 【Java EE 学习 19】【使用过滤器实现全站压缩】【使用ThreadLocal模式解决跨DAO事务回滚问题】
一.使用过滤器实现全站压缩 1.目标:对网站的所有JSP页面进行页面压缩,减少用户流量的使用.但是对图片和视频不进行压缩,因为图片和视频的压缩率很小,而且处理所需要的服务器资源很大. 2.实现原理: ...
- SQLAlchemy增删改查基本操作,及SQL基本技能样码(join,group)
练了一天,基本的东东应该有感觉了. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Tabl ...
- PS 零基础训练1
背景色:Alt + Del 前景色:Ctrl + Del 快捷键: 更换工具栏里的第二项:Shift + W or Shift + C ... 缩放:Ctrl + = or Ctrl + - 工具笔 ...
- NS 802.11函数分析(一)
recv函数有两个作用,不仅是接收其他节点发送的包,而且当节点接收到其他包的时候也会调用recv() 首先给出NS2中recv的源码,和一些注释: void Mac802_11::recv(Packe ...
- PMP 第十章 项目沟通管理
1识别干系人 2规划沟通 3发布信息 4管理干系人期望 5报告绩效 1.沟通的维度有哪些?沟通技巧有哪些? 2.规划沟通管理的目的是什么?沟通渠道的计算(重点).影响沟通技术的因素有哪些?沟通模型的步 ...
- 最实用的APP界面设计知识,有温度的APP设计(转)
在逛简书的时候,无意之间看到了这样的一篇非常有意思的app设计博文.顾25学堂的摘录了其中的一些关于移动端APP界面设计的精华.分享给25学堂的app设计师们. 当然,下面的这些app设计知识点是来自 ...