JAVA使用Gecco爬蟲 抓取網頁內容
阿新 • • 發佈:2017-08-06
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爬蟲 抓取網頁內容