Gecco é um rastreador web leve e fácil de usar desenvolvido com linguagem java.Gecco integriert jsoup, httpclient, fastjson, spring, htmlunit, redission ausgezeichneten framework, permite que você só precise configurar uma série de seletores de estilo jQuery pode ser muito rápido para escrever um rastreador .A estrutura Gecco tem excelente escalabilidade, a estrutura baseada no princípio de design aberto e fechado, para modificar o fechamento, a expansão da abertura.Ao mesmo tempo, Gecco é baseado em um protocolo de código aberto MIT muito aberto, seja você um usuário ou queira melhorar em conjunto o desenvolvedor Gecco, seja bem-vindo ao solicitar pull.Se você gosta da estrutura do rastreador, marque com estrela ou garfo!
< 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 ();
}
}
O objetivo do DynamicGecco é implementar a configuração de tempo de execução da regra de rastreamento sem definir o SpiderBean. Na verdade, o princípio é o uso de programação de código de bytes, geração dinâmica de SpiderBean, mas também através do GeccoClassLoader customizado para atingir a regra de implantação a quente .Abaixo está uma demonstração simples, uma demonstração mais complexa pode consultar o exemplo abaixo com.geccocrawler.gecco.demo.dynamic.
O código a seguir implementa a configuração de tempo de execução da regra de rastreamento:
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();
Você pode ver que o modo DynamicGecco comparado ao modo tradicional de anotação de código é bastante reduzido, e um ponto muito legal é o DynamicGecco para suportar o funcionamento da definição e modificação de regras.
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(一)
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(二)
教您使用 java 爬虫 gecco 抓取 JD 全部商品信息(三)
集成 Htmlunit 下载页面
爬虫的监控
一个完整的例子,分页处理,结合 spring,mysql 入库
Uma lista de ferramentas semelhantes e como elas se comparam está disponível aqui:
Comparação de software de arquivamento da Web
Gecco
Por favor, siga o protocolo de código aberto MIT!