JAVA使用Gecco爬蟲 抓取網頁內容(附Demo)

JAVA 爬蟲工具備挺多的,可是Gecco是一個挺輕量方便的工具。css

先上項目結構圖。html

這是一個 JAVASE的 MAVEN 項目,要添加包依賴,其餘就四個文件。log4j.properties 加上三個java類。java

一、先配置log4j.propertiesgit

log4j.rootLogger=INFO,Console,File
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

log4j.appender.File = org.apache.log4j.RollingFileAppender
log4j.appender.File.File = logs/ssm.log
log4j.appender.File.MaxFileSize = 10MB
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%ngithub

 

二、接下來着手寫Blog.java,裏面都有註釋  不解釋apache

package com.cwj.gecco.pojo;

import com.geccocrawler.gecco.annotation.Gecco;
import com.geccocrawler.gecco.annotation.HtmlField;
import com.geccocrawler.gecco.annotation.Request;
import com.geccocrawler.gecco.request.HttpRequest;
import com.geccocrawler.gecco.spider.SpiderBean;

/**
 * @author cwj
 * 2017年8月6日
 * Blog實體類,運行主函數從這裏開始解析
 * matchUrl:要抓包的目標地址
 * pipelines:跳轉到下個pipelines
 */
@Gecco(matchUrl="http://www.cnblogs.com/boychen/p/7226831.html",pipelines="blogPipelines")
public class Blog implements SpiderBean{
    /**
     * 向指定URL發送GET方法的請求
     */    
    @Request
    private HttpRequest request;
    
    /**
     * 抓去這個路徑下全部的內容
     */
    @HtmlField(cssPath = "body div#cnblogs_post_body")
    private String content;

    public HttpRequest getRequest() {
        return request;
    }

    public void setRequest(HttpRequest request) {
        this.request = request;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    } 
    
    
}

 

三、BlogPipelines.java app

package com.cwj.gecco.pipelines;

import com.cwj.gecco.pojo.Blog;
import com.geccocrawler.gecco.annotation.PipelineName;
import com.geccocrawler.gecco.pipeline.Pipeline;

/**
 * @author cwj
 * 2017年8月6日
 * 運行完Blog.java 根據@PipelineName 來這裏
 */
@PipelineName(value="blogPipelines")
public class BlogPipelines implements Pipeline<Blog>{

    /**
     * 將抓取到的內容進行處理  這裏是打印在控制檯
     */
    public void process(Blog blog) {
        System.out.println(blog.getContent());
    }

}

 

四、最後即是在main中調用ide

package com.cwj.gecco.main;

import com.geccocrawler.gecco.GeccoEngine;

public class Main {
    public static void main(String[] args) {
         GeccoEngine.create()
            //工程的包路徑
            .classpath("com.cwj.gecco")
            //開始抓取的頁面地址
            .start("http://www.cnblogs.com/boychen/p/7226831.html")
            //開啓幾個爬蟲線程
            .thread(10)
            //單個爬蟲每次抓取完一個請求後的間隔時間
            .interval(5)
            //使用pc端userAgent
            .mobile(false)
            //開始運行
            .run();
    }
}

 

五、抓取到內容,日誌文件被我刪除  有警告函數

 

 

附上源碼地址  https://github.com/BeautifulMeet/Gecco工具

相關文章
相關標籤/搜索