nodejs 爬虫

一个 nodejs 的爬虫示例,此处用于抓取 hexo 所有主题,并排序输出关注(star)排行

代码

https://github.com/henry-fighting/nodejs-crawler

使用方法

  1. 安装依赖包 npm install
  2. 执行指令 node server.js
  3. 到浏览器访问 localhost:3000

背景

玩 hexo 时苦于找不到好的主题,上知乎一搜,有人通过爬虫抓取了所有主题的排行版,但发帖时间是 2015 年的,已经过期很久。人家可以爬虫,我也可以,所以作死的开启了爬虫之路

工作内容

  1. 访问 hexo 主题页: https://hexo.io/themes/
  2. 抓取所有主题的名字和 github 链接
  3. 访问所有主题的 github 链接,抓取 star 数
  4. 将所有主题对 star 进行排序,并输出到页面

启发

1. request VS SuperAgent

一开始按照【参考资料1】使用 SuperAgent,发现爬虫非常慢,导致浏览器直接超时不访问了。还以为是 github 慢,开户了科学上网工具,效果一般。不得不亲自“爬虫”,访问 github 页面。实际上,页面反应很快,或者说 document 加载很快,是其他资源加载慢了。SuperAgent 估计是等到页面 loaded 了之后才返回数据。
所以,有没有工具像 linux 里的 curl 合集,可以只请求 document 呢?百度下来找到了 requrest,请求确实快了很多,问题解决。

那是不是说 request 就比 SuperAgent 好呢?分情况。如果爬虫的数据在 document 里,用 request 可以明显加快爬虫效率;如果爬虫的数据是页面 AJAX 请求得到的,就需要等到页面加载完再爬虫,此时就需要 SuperAgent 了。

2. 事件处理 与 函数

第一次看到事件时,一直以为事件就和函数一样,都是执行一项任务。接触爬虫后发现,事件的真正作用在异步(异步并非并发)!!

刚开始开发爬虫时用的是函数,发现爬虫一直是爬完一个再爬另一个,效率非常慢(函数是顺序执行的)。这里才理解爬虫例子中使用事件不是没有原因的,异步才是使用 nodejs 爬虫最大的好处。


参考资料

  1. 【nodeJS爬虫】前端爬虫系列 – 小爬「博客园」
  2. request 使用说明 github
  3. Nodejs读写文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值