首页 > 代码库 > JAVA使用Gecco爬虫 抓取网页内容

JAVA使用Gecco爬虫 抓取网页内容

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 根据@PipelineName 来这里
 */
@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爬虫 抓取网页内容