Gecco es un rastreador web liviano y fácil de usar desarrollado con lenguaje Java. Gecco integra jsoup, httpclient, fastjson, spring, htmlunit, redission ausgezeichneten framework. Solo necesita configurar varios selectores de estilo jQuery, puede escribir un rastreador muy rápidamente. .Gecco framework tiene una excelente escalabilidad, el framework se basa en el principio de diseño abierto y cerrado, para modificar el cierre, la expansión de open.Al mismo tiempo, Gecco se basa en un protocolo de código abierto del MIT muy abierto, ya sea que sea un usuario o desee mejorar conjuntamente al desarrollador de Gecco, bienvenido a solicitar extracción. Si le gusta el marco del rastreador, ¡estrella o bifurcación!
< 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 ();
}
}
El propósito de DynamicGecco es implementar la configuración de tiempo de ejecución de la regla de rastreo sin definir SpiderBean. De hecho, el principio es usar programación de código de bytes para generar dinámicamente SpiderBean y también implementar reglas en caliente a través de GeccoClassLoader personalizado. A continuación se muestra una demostración simple; una demostración más compleja puede consultar el siguiente ejemplo com.geccocrawler.gecco.demo.dynamic.
El siguiente código implementa la configuración de tiempo de ejecución de la regla de rastreo:
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();
Puede ver que el método DynamicGecco se reduce considerablemente en comparación con el método tradicional de anotación de código, y un punto muy interesante es que DynamicGecco admite la operación de definición y modificación de reglas.
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(一)
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(二)
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(三)
集成 Htmlunit 下载页面
爬虫的监控
一个完整的例子,分页处理,结合 spring,mysql 入库
Una lista de herramientas similares y cómo se comparan está disponible aquí:
Comparación de software de archivo web
Gecco 的发展离不开大家支持,扫一扫请作者喝杯咖啡~
¡Siga el protocolo de código abierto MIT!