gecco
1.3.0Release
Gecco是一款使用java語言開發的簡單易用的輕量級網路爬蟲。快速的編寫一個爬蟲Gecco框架具有優秀的可擴展性,該框架基於開放和封閉的原則設計,對修改封閉,擴展開放。 Gecco開發者,歡迎請求pull。
< dependency >
< groupId >com.geccocrawler</ groupId >
< artifactId >gecco</ artifactId >
< version >x.x.x</ version >
</ dependency >
httpclient,jsoup,fastjson,reflections,cglib,rhino,log4j,jmxutils,commons-lang3
@ Gecco ( matchUrl = "https://github.com/{user}/{project}" , pipelines = "consolePipeline" )
public class MyGithub implements HtmlBean {
private static final long serialVersionUID = - 7127412585200687225L ;
@ RequestParameter ( "user" )
private String user ;
@ RequestParameter ( "project" )
private String project ;
@ Text
@ HtmlField ( cssPath = ".pagehead-actions li:nth-child(2) .social-count" )
private String star ;
@ Text
@ HtmlField ( cssPath = ".pagehead-actions li:nth-child(3) .social-count" )
private String fork ;
@ Html
@ HtmlField ( cssPath = ".entry-content" )
private String readme ;
public String getReadme () {
return readme ;
}
public void setReadme ( String readme ) {
this . readme = readme ;
}
public String getUser () {
return user ;
}
public void setUser ( String user ) {
this . user = user ;
}
public String getProject () {
return project ;
}
public void setProject ( String project ) {
this . project = project ;
}
public String getStar () {
return star ;
}
public void setStar ( String star ) {
this . star = star ;
}
public String getFork () {
return fork ;
}
public void setFork ( String fork ) {
this . fork = fork ;
}
public static void main ( String [] args ) {
GeccoEngine . create ()
. classpath ( "com.geccocrawler.gecco.demo" )
. start ( "https://github.com/xtuhcy/gecco" )
. thread ( 1 )
. interval ( 2000 )
. loop ( true )
. mobile ( false )
. start ();
}
}
DynamicGecco的目的是在不定義SpiderBean的情況下,實作抓取規則的運行時配置。簡單的Demo,更複雜的Demo可以參考下面的例子com.geccocrawler.gecco.demo.dynamic。
下面的程式碼實現了抓取規則的運行時配置:
DynamicGecco.html()
.gecco("https://github.com/{user}/{project}", "consolePipeline")
.requestField("request").request().build()
.stringField("user").requestParameter("user").build()
.stringField("project").requestParameter().build()
.stringField("star").csspath(".pagehead-actions li:nth-child(2) .social-count").text(false).build()
.stringField("fork").csspath(".pagehead-actions li:nth-child(3) .social-count").text().build()
.stringField("contributors").csspath("ul.numbers-summary > li:nth-child(4) > a").href().build()
.register();
GeccoEngine.create()
.classpath("com.geccocrawler.gecco.demo")
.start("https://github.com/xtuhcy/gecco")
.run();
可以看到DynamicGecco方式相比傳統的註解方式程式碼大大減少了,而且很酷的一點就是DynamicGecco支援操作規則的定義和修改。
教您使用 java 爬蟲 gecco 抓取 JD 全部商品資訊(一)
教您使用 java 爬蟲 gecco 抓取 JD 全部商品資訊(二)
教您使用 java 爬蟲 gecco 抓取 JD 全部商品資訊(三)
整合 Htmlunit 下載頁面
爬蟲的監控點
一個完整的例子,分頁處理,結合spring,mysql入庫
此處提供了類似工具的清單以及它們的比較方式:
網路歸檔軟體比較
Gecco的發展請大家支持,掃一掃請作者喝杯咖啡~
請遵循MIT開源協定!