node爬虫

其实node写爬虫并不是特别合适,主要的原因,就是库的支持程度没有python那么高了。当然本着学习node的态度还是可以的。网上教用node写爬虫的一大堆,我这里不具体讲,怎么爬。就写写大体上的思路和可能会遇到的一些问题。

首先先给出几个node写爬虫的几个简单教程

  1. 使用 superagent 与 cheerio 完成简单爬虫
  2. NodeJS写个爬虫,把文章放到kindle中阅读
  3. 使用Node.js制作爬虫教程

想用node写爬虫的小白同学可以照着学一下。
然后我这边就主要讲一下爬虫思路。
所谓爬虫无非是要别人的网站页面上,获取到有价值的信息并保存下来。
那么流程上就成了:
一个环节一个环节简单说下。除了数据分析,因为我不会。。。。

  1. 获取html就是用node发请求取获取指定网站上的html源码。在这个步骤上,还是有蛮多库可以选择的。当然也可用原生node的http库做这个事。 其他三方库也是蛮多的,比如:request, superagent,etc。
    这里需要注意的事, 当请求一下子发太多,因为网络问题,会导致大量请求失败。所以这里最好引入一个三方库(co, async),来控制请求数。保证一下子请求不要太多。
  2. 分析html。简单的可以直接用正则表达式,复杂的可以用cheerio,这个库基本上就是node端的jquery。所以用jq获取页面的对应信息还是比较简单的。
    当然也有坑, 当直接能获取到html源码的网页,用这种方式当然可以了。但是想新浪微博之类的把html写在js代码里,需要运行js才能渲染出页面的网站。就是自己稍稍动动脑筋,用eval执行下js,还是能渲染页面的。但是如果遇到spa框架写的页面。那基本上就没戏了。
    需要换方案解决,可以用phantomjs之类的无头浏览器。正常访问页面,然后正常获取数据的方式来做。
  3. 保存数据基本上很简单了。自己玩玩的项目可以直接用fs写文件。大项目需要做数据分析的就放入数据库。
  4. 分析大量数据。不会。。。。。。

以上就是我对node爬虫的一些认识。