听别人说node可以写爬虫,然后我去尝试了一下,有点累啊,大概原理其实用jq都能做出来效果,只是说没有后台操作了。

原理

  1. 利用http模块发出请求
  2. 获取到网页信息
  3. 通过cheerio插件进行提取信息
  4. 保存

遇到的一些问题

首先就是提取信息,因为获取到的其实是一个html页面的内容,我们需要进行提取,这里当然用jq会方便很多,但是node里面没有jq,只有cheerio这个伪jq,所以很多jq的方便的方法,使用这个插件用不出来。

特别是$(".box:nth-child(2)")这种选择器就无法使用,只能通过eq,和find进行截取,然后再each循环,性能上应该很浪费。

转义

有的站点他的html是转义的,我们直接通过正则去匹配的话,得到的值也只能是未转义的,而js无法将其转为中文字符,所以很头疼,最终做法是使用cheerio的方法获取dom节点,通过.text()方法或者attr()这种来进行获取。

正则行不通。

保存,如果你是存数据库,那很好说,我这里讲讲我存本地的一些问题。

我的想法是就存个本地json文件好了,反正东西也不多,存mysql就有点浪费了。

所以我使用了promise-fs模块异步读存,加上爬虫的抓取他是很快的遍历,所以会导致,上一个还没存完,第二个又来了,所以我这里建议,读存使用同步方法。

预览图

源码

这里就提供下源码了,有兴趣的可以自行下载,给自己也留个在线包方便以后用的时候直接拿。

此处内容已隐藏回复后方可阅读。

分类: Node 标签: nodekoa爬虫

评论

暂无评论数据

暂无评论数据

目录