1. 程式人生 > >JAVA使用Gecco爬蟲 抓取網頁內容

JAVA使用Gecco爬蟲 抓取網頁內容

log pro 指定 get www. error 一個 log4j java類

JAVA 爬蟲工具有挺多的,但是Gecco是一個挺輕量方便的工具。

先上項目結構圖。

技術分享

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

1、先配置log4j.properties

log4j.rootLogger = error,stdout,D,E

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern 
= [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = vincent_player_debug.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern
= %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = vincent_player_error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern
= %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

2、接下來著手寫Blog.java,裏面都有註釋 不解釋

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;
    } 
    
    
}

3、BlogPipelines.java

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 [email protected] 來這裏
 */
@PipelineName(value="blogPipelines")
public class BlogPipelines implements Pipeline<Blog>{

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

}

4、最後便是在main中調用

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();
    }
}

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

技術分享

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

JAVA使用Gecco爬蟲 抓取網頁內容