赞
踩
nodejs 是什么
nodejs不是框架;jquery是框架
nodejs 是js 运行时的运行环境,类比java中jvm
只要安装对应版本的nodejs,那你就可以用js来开发后台程序。
vue是前端框架,js的三大框架之一
node是后端开发语言,同php、java、c#一样的
1. 异步并发请求
async
eventproxy
当你需要去多个源 (一般是小于 10 个) 汇总数据的时候,用 eventproxy 方便;
当你需要用到队列,需要控制并发数,或者你喜欢函数式编程思维时,使用 async。
大部分场景是前者,所以大部分时间用 eventproxy 。
网站有并发连接数限制?
爬虫: rate limit 的限制?
异步到底为何异步,Node.js 为何单线程却能并发
@朴灵 的 《九浅一深 Node.js》
js 写异步并发,并处理数据 链接
如果你要并发异步获取两三个地址的数据,并且要在获取到数据之后,对这些数据一起进行利用的话,常规的写法是自己维护一个计数器。
先定义一个 var count = 0,然后每次抓取成功以后,就
count++。如果你是要抓取三个源的数据,由于你根本不知道这些异步操作到底谁先完成,那么每次当抓取成功的时候,就判断一下 count
=== 3。当值为真时,使用另一个函数继续完成操作。
eventproxy 就起到了这个计数器的作用,它来帮你管理到底这些异步操作是否完成,完成之后,它会自动调用你提供的处理函数,并将抓取到的数据当参数传过来。
eventproxy 并发请求,时间取决于最慢的请求
2. node 爬虫
使用 superagent 抓取网页
使用 cheerio 库 分析网页
用到三个依赖,分别是 express,superagent 和 cheerio。
superagent (http://visionmedia.github.io/superagent/ ) 是个 http 方面的库,可以发起 get 或 post 请求。
cheerio (https://github.com/cheeriojs/cheerio ) 大家可以理解成一个 Node.js 版的 jquery,用来从网页中以 css selector 取数据,使用方式跟 jquery 一样一样的。
3. 线上部署
heroku 是弄 ruby 的 paas 起家,现在支持多种语言环境,更甚的是它强大的 add-on 服务。
paas 平台相信大家都不陌生。Google 有 gae,国内新浪有 sae。paas 平台相对 vps
来说,不需要你配置服务器,不需要装数据库,也不需要理会负载均衡。这一切都可以在平台上直接获取。你只要专注自己的业务,把应用的逻辑写好,然后发布上去,应用自然就上线了。数据库方面,如果你用 mysql,那么你可以从平台商那里得到一个
mysql 的地址、账号和密码,直接连接就能用。如果应用的流量增大,需要横向拓展,则只用去到 paas
平台的管理页面,增大服务器实例的数量即可,负载均衡会自动帮你完成。
heroku 的 addon
这个 addon 确实是个神奇的东西。这些 addon 提供商,有些提供 redis 的服务,有些提供 mongodb,有些提供
mysql。你可以直接在 heroku 上面进行购买,然后 heroku 就会提供一段相应服务的地址和账号密码给你用来连接。 大家可以去
https://addons.heroku.com/ 这个页面看看,玲琅满目各种应用可以方便接入。
之所以这类服务有市场,也是因为亚马逊的 aws 非常牛逼。为什么这么说呢,因为网络速度啊。 如果现在在国内,你在 ucloud
买个主机,然后用个阿里云的 rds,那么应用的响应速度会因为 mysql 连接的问题卡得动不了。但在 heroku 这里,提供商们,包括
heroku 自己,都是构建在 aws 上面,这样一来,各种服务的互通其实走的是内网,速度很可以接受,于是各种 addon
提供商就做起来了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。