写在最前
近期读到了alsotang的node教程,对一些基础知识又有了些新认识,故重新梳理了一下,分享出来。这里是教程地址。
本次使用了superagent、cheerio来爬取知乎的发现页文章列表,通过async来控制并发数来动态获取延时加载的文章。源码地址,以及作者的blog欢迎关注,不定期更新中——
实现步骤
- 搭建http服务
- 通过superagent获取页面html
- 使用cheerio提取html相应字段
- 使用async第三方库进行并发控制
搭建http服务
// Spider.js
var http = require('http')
const server = http.createServer((req, res) => {
...
}).listen(9090)
nodejs封装了HTTP模块可以让我们快速的搭建一个基础服务,由上面代码可以看出其实一句话就可以解决问题。至于想深入HTTP模块可参照文档。至此我们可以通过
node Spider.js
来开启服务器,这里推荐使用nodemon其自动监听代码修改并自启动还是很方便的。
通过superagent获取页面html
var baseUrl = 'http://www.zhihu.com/node/ExploreAnswerListV2'
superagent.get(baseUrl)
.set({
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Referrer': 'www.baidu.com'
})
.query({
params