Gecco는 Java 언어로 개발된 사용하기 쉬운 경량 웹 크롤러입니다. Gecco 통합 jsoup, httpclient, fastjson, spring, htmlunit, redission ausgezeichneten 프레임워크, 여러 jQuery 스타일 선택기를 구성하기만 하면 크롤러를 매우 빠르게 작성할 수 있습니다. .Gecco 프레임워크는 확장성이 뛰어나며 개방형 및 폐쇄형 설계 원칙을 기반으로 하는 프레임워크로 폐쇄를 수정하고 개방성을 확장합니다. 동시에 Gecco는 매우 개방적인 MIT 오픈 소스 프로토콜을 기반으로 합니다. 사용자이거나 Gecco 개발자를 공동으로 개선하려는 경우 풀 요청을 환영합니다. 크롤러 프레임워크가 마음에 들면 별표 표시 또는 포크를 눌러주세요!
< 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을 정의하지 않고 크롤링 규칙의 런타임 구성을 구현하는 것입니다. 실제로 원칙은 바이트 코드 프로그래밍, SpiderBean의 동적 생성을 사용하는 것뿐 아니라 사용자 정의 GeccoClassLoader를 통해 핫 배포 규칙을 달성하는 것입니다. .아래는 간단한 데모이고, 더 복잡한 데모는 아래 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를 따르세요!