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工具