亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java爬蟲Gecco工具抓取新聞實(shí)例

 更新時間:2016年10月28日 11:11:19   作者:趙俠客  
本篇文章主要介紹了JAVA 爬蟲Gecco工具抓取新聞實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

最近看到Gecoo爬蟲工具,感覺比較簡單好用,所有寫個DEMO測試一下,抓取網(wǎng)站
http://zj.zjol.com.cn/home.html,主要抓取新聞的標(biāo)題和發(fā)布時間做為抓取測試對象。抓取HTML節(jié)點(diǎn)通過像Jquery選擇器一樣選擇節(jié)點(diǎn),非常方便,Gecco代碼主要利用注解實(shí)現(xiàn)來實(shí)現(xiàn)URL匹配,看起來比較簡潔美觀。

添加Maven依賴

<dependency>
   <groupId>com.geccocrawler</groupId>
   <artifactId>gecco</artifactId>
   <version>1.0.8</version>
</dependency>

編寫抓取列表頁面

@Gecco(matchUrl = "http://zj.zjol.com.cn/home.html?pageIndex={pageIndex}&pageSize={pageSize}",pipelines = "zJNewsListPipelines")
public class ZJNewsGeccoList implements HtmlBean {
  @Request
  private HttpRequest request;
  @RequestParameter
  private int pageIndex;
  @RequestParameter
  private int pageSize;
  @HtmlField(cssPath = "#content > div > div > div.con_index > div.r.main_mod > div > ul > li > dl > dt > a")
  private List<HrefBean> newList;
}
@PipelineName("zJNewsListPipelines")
public class ZJNewsListPipelines implements Pipeline<ZJNewsGeccoList> {
  public void process(ZJNewsGeccoList zjNewsGeccoList) {
    HttpRequest request=zjNewsGeccoList.getRequest();
    for (HrefBean bean:zjNewsGeccoList.getNewList()){
      //進(jìn)入祥情頁面抓取
    SchedulerContext.into(request.subRequest("http://zj.zjol.com.cn"+bean.getUrl()));
    }
    int page=zjNewsGeccoList.getPageIndex()+1;
    String nextUrl = "http://zj.zjol.com.cn/home.html?pageIndex="+page+"&pageSize=100";
    //抓取下一頁
    SchedulerContext.into(request.subRequest(nextUrl));
  }
}

編寫抓取祥情頁面

@Gecco(matchUrl = "http://zj.zjol.com.cn/news/[code].html" ,pipelines = "zjNewsDetailPipeline")
public class ZJNewsDetail implements HtmlBean {

  @Text
  @HtmlField(cssPath = "#headline")
  private String title ;

  @Text
  @HtmlField(cssPath = "#content > div > div.news_con > div.news-content > div:nth-child(1) > div > p.go-left.post-time.c-gray")
  private String createTime;
}

@PipelineName("zjNewsDetailPipeline")
public class ZJNewsDetailPipeline implements Pipeline<ZJNewsDetail> {
  public void process(ZJNewsDetail zjNewsDetail) {
    System.out.println(zjNewsDetail.getTitle()+" "+zjNewsDetail.getCreateTime());
  }
}

啟動主函數(shù)

public class Main {
  public static void main(String [] rags){
    GeccoEngine.create()
        //工程的包路徑
        .classpath("com.zhaochao.gecco.zj")
        //開始抓取的頁面地址
        .start("http://zj.zjol.com.cn/home.html?pageIndex=1&pageSize=100")
        //開啟幾個爬蟲線程
        .thread(10)
        //單個爬蟲每次抓取完一個請求后的間隔時間
        .interval(10)
        //使用pc端userAgent
        .mobile(false)
        //開始運(yùn)行
        .run();
  }
}

抓取結(jié)果

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中Map循環(huán)遍歷的五種方法實(shí)現(xiàn)

    Java中Map循環(huán)遍歷的五種方法實(shí)現(xiàn)

    本文主要介紹了Java中Map循環(huán)遍歷的五種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java 線程對比(Thread,Runnable,Callable)實(shí)例詳解

    Java 線程對比(Thread,Runnable,Callable)實(shí)例詳解

    這篇文章主要介紹了Java 線程(Thread,Runnable,Callable)實(shí)例詳解的相關(guān)資料,這里對java 線程的三種方法進(jìn)行了對比,需要的朋友可以參考下
    2016-12-12
  • java中循環(huán)刪除list中元素的方法總結(jié)

    java中循環(huán)刪除list中元素的方法總結(jié)

    下面小編就為大家?guī)硪黄猨ava中循環(huán)刪除list中元素的方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Spring AOP面向切面編程實(shí)現(xiàn)原理方法詳解

    Spring AOP面向切面編程實(shí)現(xiàn)原理方法詳解

    這篇文章主要介紹了Spring AOP面向切面編程實(shí)現(xiàn)原理方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • java 中冒泡、二分、快速算法詳解

    java 中冒泡、二分、快速算法詳解

    這篇文章主要介紹了java 中冒泡、二分、快速算法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • SpringBoot源碼分析之bootstrap.properties文件加載的原理

    SpringBoot源碼分析之bootstrap.properties文件加載的原理

    本文通過訪問看到bootstrap.properties中的信息獲取到了,同時age也被application.properties中的屬性覆蓋掉了。加載順序到底是什么?為什么會覆蓋呢?我們接下來分析下吧
    2021-12-12
  • 為何Java8需要引入新的日期與時間庫

    為何Java8需要引入新的日期與時間庫

    這篇文章主要給大家介紹了關(guān)于Java8為什么需要引入新的日期與時間庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java移動文件夾及其所有子文件與子文件夾

    Java移動文件夾及其所有子文件與子文件夾

    這篇文章主要為大家詳細(xì)介紹了Java移動文件夾及其所有子文件與子文件夾的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • java啟動線程的3種方式對比分析

    java啟動線程的3種方式對比分析

    這篇文章主要為大家對比分析了java啟動線程的3種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java設(shè)計模式之Iterator模式介紹

    Java設(shè)計模式之Iterator模式介紹

    所謂Iterator模式,即是Iterator為不同的容器提供一個統(tǒng)一的訪問方式。本文以java中的容器為例,模擬Iterator的原理。需要的朋友可以參考下
    2013-07-07

最新評論