V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjtushilei
V2EX  ›  Java

ScriptSpider: 一个分布式的简单易用的 Java 爬虫框架

  •  2
     
  •   xjtushilei · 2017-04-14 08:59:20 +08:00 · 2897 次点击
    这是一个创建于 2541 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ScriptSpider

    ScriptSpider (以下简称 SS ),做一个好用的爬虫框架。

    目前的功能已经够大多数情况下使用, ScriptSpider 会朝着易用、高度、最新技术的方向发展!

    欢迎 StarFork 我的项目!算是给点鼓励也好(嘿嘿)

    特点

    • Java 开发(学习 java 的良方)
    • 易理解(中文注释,多样例代码)
    • 易用性(最短一行代码就可以开始爬虫)
    • 代码少(已经默认实现了大部分功能)
    • 基于 Jsoup (个人化解析网页方便)
    • 高度扩展性(热插拔组件,可定制每一个流程)
    • 速度快(多线程爬虫,线程池管理,线程池下载,分布式)
    • 分布式(基于 redis , mq 等,部署简单,速度很快) [部分待完成]
    • 反爬虫(模拟浏览器,随机 userAgent ) [部分待完成]
    • 代理(自动切换代理) [待完成]
    • 监控(分布式监控) [待完成]
    • 故障重爬(断电,宕机后继续爬取) [待完成]
    • 未完待续

    安装

    使用 maven

    <dependency>
        <groupId>com.github.xjtushilei</groupId>
        <artifactId>scriptspider</artifactId>
        <version>0.2</version>
        <!--请尽量使用最新版本-->
    </dependency>
    

    关于版本

    请尽量使用最新版本,http://search.maven.org,中央仓库搜索最新版本

    因为文档都是根据最新版本来及时更新的。

    离线使用 jar 包

    在项目主页的 releases 目录

    在最新的 release 下面,下载相应的所有的依赖包集合 zip :dependency.zip

    打开自己的工程,导入即可!

    如何开始

    在开始之前,你应该先了解该框架是如何工作的。

    流程图

    流程图

    基本上,你只需要提供“解析器”,“下载器”两个模块就好啦。

    因为 SS 也不知道您想要哪一部分内容,不知道您想存到哪里~

    如果您对上图很了解,那么可以直接开始编程了。或者您可以先看一下下面的简单用法介绍。

    src/main/java/com/github/xjtushilei/example中可以查看所有的样例程序

    最小 Spider

        //爬取《交大新闻网》开始的所有页面信息,并将信息打印到控制台!
    
        Spider.build().addUrlSeed("http://news.xjtu.edu.cn").run();
    
    

    一句话,就能实现一个爬虫!

    因为,我们给您默认提供了好多组件。

    最小多线程 Spider

        //爬取《交大新闻网》开始的所有页面信息,并将信息打印到控制台!
        Spider.build()
              .thread(10)   //设置多少个线程
              .addUrlSeed("http://news.xjtu.edu.cn")
              .run();
    
    

    如果您没有设置 thread 选项,默认是 5 个线程

    当然了,您可以使用.thread(1)来使用单线程。虽然我们不建议您这么做。

    甚至您可以使用.thread(-100)来启动线程(呵呵,默认是 5 )

    正常的机器,我们推荐您使用 10 个以上的线程进行尝试!

    更多的示范

    请移步How to Start

    感受

    1. 设计一个框架需要考虑的东西需要很多,自己能力有限,第一次设计,不妥之处欢迎大家提 issue 。
    2. 开源项目,需要花费很多的精力,自己有时候也挺疯狂的,各种折腾。回首一看,还是挺开心的。
    3. 如果你有兴趣,可以加入 ScriptSpider ,我们一起构建更美好的 JAVA 爬虫框架!

    背景

    因背景有失大雅,故放在后面。

    无意之中看到了一个软件设计大赛,看到一个题目有兴趣,结果工作人员迟迟不给示例文件密码,破解失败,无奈就随手选了个题目,那就爬虫吧。

    欢迎加入我们

    虽然现在只有一个人。

    联系个人主页的邮箱、 QQ 等即可。

    10 条回复    2017-06-26 21:50:48 +08:00
    Caratpine
        1
    Caratpine  
       2017-04-14 09:08:55 +08:00
    支持👍🏻
    sunzhenyucn
        2
    sunzhenyucn  
       2017-04-14 09:27:17 +08:00 via iPhone
    Mark 一下
    xjtushilei
        3
    xjtushilei  
    OP
       2017-04-14 09:39:38 +08:00
    @Caratpine 谢谢
    xgfan
        4
    xgfan  
       2017-04-14 11:40:01 +08:00
    和 webmagic 相比有什么亮点吗?
    xjtushilei
        5
    xjtushilei  
    OP
       2017-04-17 15:16:36 +08:00
    @xgfan 谢谢您的问题。您提了之后我去看了一下 webmagic ,后来发现,其实我的这个好像并没有特别大的优势,好像都差不多。从代码,文档,设计思路等等来说,都还差点。之后我会再持续关注一下。
    wellhome
        6
    wellhome  
       2017-04-19 22:49:54 +08:00 via iPhone
    支持楼主
    herozzm
        7
    herozzm  
       2017-04-30 11:40:24 +08:00 via Android
    解析器最好支持正则,json,css 选择器
    herozzm
        8
    herozzm  
       2017-04-30 11:41:01 +08:00 via Android
    还有 xpath
    wk999
        9
    wk999  
       2017-06-08 22:11:12 +08:00 via iPhone
    跟 webmagic 好像。。。
    rekulas
        10
    rekulas  
       2017-06-26 21:50:48 +08:00
    已 star,试用了不少大牛们推荐的爬虫,都或多或少有些问题,没想到作者的小爬虫给我带来了惊喜
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4091 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 05:18 · PVG 13:18 · LAX 22:18 · JFK 01:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.