精华 轻量级定向爬虫light-crawler,轻松实现页面数据的抓取与资源下载
发布于 10 小时前 作者 zhang2333 160 次浏览 最后一次编辑是 8 小时前 来自 分享

缘由

起初打算找个爬虫框架写点自己用的爬虫,但并没有在github上找到合适的(以crawler作为关键词)。 看过stack overflow上的一个问答之后,明白了原来crawler(通用爬虫)和scraper(数据提取)其实各有分工,所以很多crawler项目都只是通用爬虫,而几乎没有我想要的定向爬虫,scraper又只专注于页面数据的提取,无奈之下决定结合两者做出一个用于提取页面数据的爬虫,也就是定向爬虫(也有垂直爬虫的叫法,与通用的爬虫的区别可前往百度)。

依赖

  • bluebird,用于任务的队列化与流程控制,可并发请求
  • cheerio,用于页面数据的提取,主要是提供了一些常用函数,如getLinks()
  • request-promise(request的bluebird版本),用于发起http/https请求
  • lodash(鲁大师)

概要说明

  • 任务(url)队列化,任务置于队列中依次执行,可设置并发数量
  • 任务队列可暂停/继续
  • 任务驱动型,任务全部执行完毕会进入超时等待(drainAwait,默认0),超时时间内爬虫收到任务(url)就会继续运作,否则停止
  • 以url的分类(正则)来制定不同页面的数据提取规则
  • 支持所有request的请求option,默认自解压gzip
  • 为任务指定downloadTask: true即可便捷地下载资源
  • 支持自定义logger,默认是控制台输出log(可控制颜色)

具体使用详见中文文档 https://github.com/zhang2333/light-crawler/blob/master/README_zh_CN.md

写了有一段时间了,功能也比较完善了,自己用着写了些非常实用的爬虫(相信我,爬虫能做很多有趣的事),比如这个 爬取一个大型的BT站(有很多广告,也不能按大小排序),自定义排序并批量提取相关资源的磁链。截图在最下面

最后,毕竟这是一个人写的,肯定有些错误和不合理的地方,欢迎大家的建议与指正。

项目地址https://github.com/zhang2333/light-crawleraaa.jpg

(截图是基于light-crawler的一个实现,顺便问一下截图的位置是如何确定的)

2 回复
回到顶部