JAVA 爬蟲工具有挺多的,但是Gecco是一個挺輕量方便的工具。
先上項目結構圖。
這是一個 JAVASE的 MAVEN 項目,要添加包依賴,其他就四個文件。log4j.properties 加上三個java類。
1、先配置log4j.properties
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%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