Java爬虫框架调研

Python中大的爬虫框架有scrapy(风格类似django),pyspider(国产python爬虫框架)。
除了Python,Java中也有许多爬虫框架。

  • nutch
    apache下的开源爬虫程序,功能丰富,文档完整,有数据抓取解析以及存储的模块。
    它的特点是规模大。

  • heritrix
    比较成熟
    地址:internetarchive/heritrix3 · GitHub很早就有了,经历过很多次更新,使用的人比较多,功能齐全,文档完整,网上的资料也多。有自己的web管理控制台,包含了一个HTTP 服务器。操作者可以通过选择Crawler命令来操作控制台。

  • crawler4j
    UCI大学(加利福尼亚欧文分校)出品,简洁,古老,结构清晰

  • webmagic
    国产,借鉴了scrapy,有pipeline,功能比较简单。Request也有meta属性,meta属性是一个字典,meta属性的value是Object类型。

  • webcollector
    webcollector也是国人出品,作者工作单位是合肥工业大学。
    webcollector是crawler4j的压缩版,crawler4j把不同功能的类分开放置,webcollector使得只需要一个类即可。
    webcollector一个突出的改进点是,它给每一个请求打了一个标签,从而便于回调处理。

  • SeimiCrawler
    Seimi意思是“清美”,国产,该库是本文所列库里面最新的一个库,设计上深受scrapy影响,依赖很多外部包,依托spring,遵循约定大于配置的原则。
    该库设计上支持分布式,使用redis实现爬虫之间任务共享,使用JSON格式的请求来定义Request,从而可以让爬虫之间共享Request。它的Request也有meta属性,meta属性是一个字典,但是meta属性的value只能是String,这是为了迎合分布式,便于通过JSON格式传输Request对象。
    SeimiCrawler的Request跟scrapy的Request是最相似的,因为scrapy中的Request可以指明回调函数,这一点是非常常用的。SeimiCrawler中Request回调函数是字符串形式的函数名,以反射的形式来调用函数对象,避免了使用Handler形式的类。
    seimi库中也大量使用注解。

  • JSpider
    此库看上去快要死了

  • gecco
    国产,此库看上去也很新,形式上与seimi最像,整合了jsoup、fastjson/spring、htmlunit、httpclient
    支持注解的方式声明要爬取的字段,从而直接获取爬取结果。
    看上去很装逼的一个库,它大量使用注解,非常不灵活。大量使用fluent编程方式,不够清晰,官网例子过于单薄。
    作者不是在写库,而是在炫技。
    这是一个反人类的库。类似tensorflow,先构图,后运行。此库需要先把规则说清楚,然后才会执行。

  • spiderman

  • 神箭手爬虫
    一个网站,以卖爬到的数据为生
    https%3A//github.com/ShenJianShou/samples

一些爬虫成品

网络上看到的(一般都是github上的):

WechatSogou [1]- 微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。

DouBanSpider [2]- 豆瓣读书爬虫。可以爬下豆瓣读书标签下的所有图书,按评分排名依次存储,存储到Excel中,可方便大家筛选搜罗,比如筛选评价人数>1000的高分书籍;可依据不同的主题存储到Excel不同的Sheet ,采用User Agent伪装为浏览器进行爬取,并加入随机延时来更好的模仿浏览器行为,避免爬虫被封。

zhihu_spider [3]- 知乎爬虫。此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo

bilibili-user [4]- Bilibili用户爬虫。总数据数:20119918,抓取字段:用户id,昵称,性别,头像,等级,经验值,粉丝数,生日,地址,注册时间,签名,等级与经验值等。抓取之后生成B站用户数据报告。

SinaSpider [5]- 新浪微博爬虫。主要爬取新浪微博用户的个人信息、微博信息、粉丝和关注。代码获取新浪微博Cookie进行登录,可通过多账号登录来防止新浪的反扒。主要使用 scrapy 爬虫框架。

distribute_crawler [6]- 小说下载分布式爬虫。使用scrapy,Redis,
MongoDB,graphite实现的一个分布式网络爬虫,底层存储mongodb集群,分布式使用redis实现,爬虫状态显示使用graphite实现,主要针对一个小说站点。

CnkiSpider [7]- 中国知网爬虫。设置检索条件后,执行src/CnkiSpider.py抓取数据,抓取数据存储在/data目录下,每个数据文件的第一行为字段名称。

LianJiaSpider [8]- 链家网爬虫。爬取北京地区链家历年二手房成交记录。涵盖链家爬虫一文的全部代码,包括链家模拟登录代码。

scrapy_jingdong [9]- 京东爬虫。基于scrapy的京东网站爬虫,保存格式为csv。

QQ-Groups-Spider [10]- QQ 群爬虫。批量抓取 QQ 群信息,包括群名称、群号、群人数、群主、群简介等内容,最终生成 XLS(X) / CSV 结果文件。

wooyun_public[11]-乌云爬虫。 乌云公开漏洞、知识库爬虫和搜索。全部公开漏洞的列表和每个漏洞的文本内容存在mongodb中,大概约2G内容;如果整站爬全部文本和图片作为离线查询,大概需要10G空间、2小时(10M电信带宽);爬取全部知识库,总共约500M空间。漏洞搜索使用了Flask作为web server,bootstrap作为前端。

QunarSpider [12]- 去哪儿网爬虫。 网络爬虫之Selenium使用代理登陆:爬取去哪儿网站,使用selenium模拟浏览器登陆,获取翻页操作。代理可以存入一个文件,程序读取并使用。支持多进程抓取。

findtrip [13]- 机票爬虫(去哪儿和携程网)。Findtrip是一个基于Scrapy的机票爬虫,目前整合了国内两大机票网站(去哪儿 + 携程)。

163spider [14] - 基于requests、MySQLdb、torndb的网易客户端内容爬虫

doubanspiders[15]- 豆瓣电影、书籍、小组、相册、东西等爬虫集

QQSpider [16]- QQ空间爬虫,包括日志、说说、个人信息等,一天可抓取 400 万条数据。

baidu-music-spider [17]- 百度mp3全站爬虫,使用redis支持断点续传。

tbcrawler[18]- 淘宝和天猫的爬虫,可以根据搜索关键词,物品id来抓去页面的信息,数据存储在mongodb。

stockholm [19]- 一个股票数据(沪深)爬虫和选股策略测试框架。根据选定的日期范围抓取所有沪深两市股票的行情数据。支持使用表达式定义选股策略。支持多线程处理。保存数据到JSON文件、CSV文件。

BaiduyunSpider[20]-百度云盘爬虫。

参考资料

zhihu GitHub 上有哪些优秀的 Java 爬虫项目

转载于:https://www.cnblogs.com/weiyinfu/p/8099605.html

你可能感兴趣的:(爬虫,java,数据库)