ScriptSpider: 一个分布式的简单易用的 Java 爬虫框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
xjtushilei
V2EX    Java

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

  •  2
     
  •   xjtushilei Apr 14, 2017 3773 views
    This topic created in 3309 days ago, the information mentioned may be changed or developed.

    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 replies    2017-06-26 21:50:48 +08:00
    Caratpine
        1
    Caratpine  
       Apr 14, 2017
    支持
    yaidev
        2
    yaidev  
       Apr 14, 2017 via iPhone
    Mark 一下
    xjtushilei
        3
    xjtushilei  
    OP
       Apr 14, 2017
    @Caratpine 谢谢
    6IbA2bj5ip3tK49j
        4
    6IbA2bj5ip3tK49j  
       Apr 14, 2017
    和 webmagic 相比有什么亮点吗?
    xjtushilei
        5
    xjtushilei  
    OP
       Apr 17, 2017
    @xgfan 谢谢您的问题。您提了之后我去看了一下 webmagic ,后来发现,其实我的这个好像并没有特别大的优势,好像都差不多。从代码,文档,设计思路等等来说,都还差点。之后我会再持续关注一下。
    wellhome
        6
    wellhome  
       Apr 19, 2017 via iPhone
    支持楼主
    herozzm
        7
    herozzm  
       Apr 30, 2017 via Android
    解析器最好支持正则,json,css 选择器
        8
    herozzm  
       Apr 30, 2017 via Android
    还有 xpath
    herozzm
    wk999
        9
    wk999  
       Jun 8, 2017 via iPhone
    跟 webmagic 好像。。。
    rekulas
        10
    rekulas  
       Jun 26, 2017
    已 star,试用了不少大牛们推荐的爬虫,都或多或少有些问题,没想到作者的小爬虫给我带来了惊喜
    About     Help     Advertise     Blog     API     FAQ     Solana     2826 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 68ms UTC 15:38 PVG 23:38 LAX 08:38 JFK 11:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86