2. 快速开始

WebMagic主要包含两个jar包:webmagic-core-{version}.jarwebmagic-extension-{version}.jar。在项目中添加这两个包的依赖,即可使用WebMagic。

WebMagic默认使用Maven管理依赖,但是你也可以不依赖Maven进行使用。

2.1 使用Maven

WebMagic基于Maven进行构建,推荐使用Maven来安装WebMagic。在你自己的项目(已有项目或者新建一个)中添加以下坐标即可:

  1.  
    <dependency>
  2.  
    <groupId>us.codecraft</groupId>
  3.  
    <artifactId>webmagic-core</artifactId>
  4.  
    <version>0.7.3</version>
  5.  
    </dependency>
  6.  
    <dependency>
  7.  
    <groupId>us.codecraft</groupId>
  8.  
    <artifactId>webmagic-extension</artifactId>
  9.  
    <version>0.7.3</version>
  10.  
    </dependency>

WebMagic使用slf4j-log4j12作为slf4j的实现.如果你自己定制了slf4j的实现,请在项目中去掉此依赖。

  1.  
    <dependency>
  2.  
    <groupId>us.codecraft</groupId>
  3.  
    <artifactId>webmagic-extension</artifactId>
  4.  
    <version>0.7.3</version>
  5.  
    <exclusions>
  6.  
    <exclusion>
  7.  
    <groupId>org.slf4j</groupId>
  8.  
    <artifactId>slf4j-log4j12</artifactId>
  9.  
    </exclusion>
  10.  
    </exclusions>
  11.  
    </dependency>
     

    在你的项目中添加了WebMagic的依赖之后,即可开始第一个爬虫的开发了!我们这里拿一个抓取Github信息的例子:

    1.  
      import us.codecraft.webmagic.Page;
    2.  
      import us.codecraft.webmagic.Site;
    3.  
      import us.codecraft.webmagic.Spider;
    4.  
      import us.codecraft.webmagic.processor.PageProcessor;
    5.  
       
    6.  
      public class GithubRepoPageProcessor implements PageProcessor {
    7.  
       
    8.  
      private Site site = Site.me().setRetryTimes(3).setSleepTime(100);
    9.  
       
    10.  
      @Override
    11.  
      public void process(Page page) {
    12.  
      page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/\\w+/\\w+)").all());
    13.  
      page.putField("author", page.getUrl().regex("https://github\\.com/(\\w+)/.*").toString());
    14.  
      page.putField("name", page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()").toString());
    15.  
      if (page.getResultItems().get("name")==null){
    16.  
      //skip this page
    17.  
      page.setSkip(true);
    18.  
      }
    19.  
      page.putField("readme", page.getHtml().xpath("//div[@id='readme']/tidyText()"));
    20.  
      }
    21.  
       
    22.  
      @Override
    23.  
      public Site getSite() {
    24.  
      return site;
    25.  
      }
    26.  
       
    27.  
      public static void main(String[] args) {
    28.  
      Spider.create(new GithubRepoPageProcessor()).addUrl("https://github.com/code4craft").thread(5).run();
    29.  
      }
    30.  
      }

    点击main方法,选择“运行”,你会发现爬虫已经可以正常工作了!

WebMagic基础与Maven管理依赖的更多相关文章

  1. 使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包

    <?xml version="1.0" encoding="GB2312"?> <project name="CardInfo-We ...

  2. 着重基础之—构建工具—Maven的依赖管理

    着重基础之—构建工具—Maven的依赖管理 项目构建利器Maven给我们开发人员带来了极大的便利,从繁琐的jar包管理中脱身的程序员终于可以有时间再进入另一个坑了. 我今天要给大家分享的内容是我在实际 ...

  3. Maven最佳实践:管理依赖

    From:http://juvenshun.iteye.com/blog/337405 Maven最佳实践:管理依赖 "If I have seen further it is by sta ...

  4. maven入门(8)maven的依赖管理

    我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置    依赖可以声明如下: <project> ... <dependenci ...

  5. Maven管理jar包依赖常出现的不能实例化类的问题

    you'ji 在maven管理jar包依赖时,存在一种常见的问题. pom.xml文件配置没问题,通过eclipse里中的maven dependencies查看,也确实有这个jar 包,或者这个类. ...

  6. Maven的依赖管理

    我们知道dependencies是可以被继承的,这个时候我们就想到让我们的发生了共用的依赖元素转移到parent中,这样我们又进一步的优化了配置.可是问题也随之而来,如果有一天我创建了一个新的模块,但 ...

  7. maven 实践 :管理依赖

    有人认为Maven是一个依赖管理工具,当然这种想法是错误的(确切的说Maven是一个项目管理工具,贯穿了整个项目生命周期,编译,测试,打包,发布...),但Maven给人造成这种错误的印象也是有原因的 ...

  8. 使用Maven进行依赖管理和项目构建

    什么是Maven 1 依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包. 2 项目的构建:内置很多的插件与 ...

  9. 廖雪峰Java12maven基础-1maven入门-2依赖管理

    maven 如果我们的项目依赖第三方的jar包: Commons Logging发布的jar包在那里下载? 使用Log4j需要哪些jar包 其他依赖:junit,Javamail,MySQL驱动... ...

随机推荐

  1. MyBatis-Spring整合之方式2

    提前叨叨:此方法优化了上一个方式的事务支持,同时简化了一个bean的配置 1.在方式1的基础上修改UserDaoImp文件,改用使用继承SqlSessionDaoSupport的方式.代码如下: pu ...

  2. 获取表格数据转换为JSON字符串

    核心代码JavaScript代码: 方法一 function sc () { var myTable=document.getElementById("myTable"); //获 ...

  3. springboot 框架 - 探究-pom文件

    一.pom文件 父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...

  4. Ansible playbooks(任务、角色、模板、变色器、)

    playbooks配置文件: [root@ansible ~]# vim /etc/ansible/hosts [test01] 192.168.200.114 [test02] 192.168.20 ...

  5. 解决IE8不兼容 background-size

    IE8下,使用background-size适应盒子大小时不兼容,效果如下图: 网上找资料,说添加如下代码可以兼容IE8 filter: progid:DXImageTransform.Microso ...

  6. C#中equals和==的区别有哪些

    本文导读:C# 中==是用来判断变量的值是否相等,相等返回true,不相等返回false.Equals是用来判断两个对象(除string类型外)是否相等,相等的 条件是:值,地址,引用全相等,因为St ...

  7. mock数据时,http://localhost:8080/#/api/goods 无法访问到数据

    最近学习一个vue-cli的项目,需要与后台进行数据交互,这里使用本地json数据来模仿后台数据交互流程.然而发现build文件夹下没有dev-server.js文件了,因为新版本的vue-webpa ...

  8. 转发-【分享】思科无线控制器HA模式升级

    思科无线控制器HA模式下升级文档   当前使用版本:8.0.120.0 计划升级版本:8.2.151.0   其他工具: TFTP Server: 3CDaemon 远程登录:SecureCRT   ...

  9. 【原】简单shell练习(五)

    1.查询一个文件中某个单词出现的次数 # grep -o 'ts' ./test/txt |wc -l 2.统计当前文件夹下文件的个数 ls -l |grep "^-"|wc -l ...

  10. 策略模式,重构if-else

    最近完成了我们公司的公众号开发,在微信消息路由选择的时候一开始都是用if-else 来判断,后面if-else月写越多显得十分的乱.在网上简单查了一下解决方法,果然有不少干货,感觉最经典最简洁的还是使 ...