Gecco - это простой в использовании легкий веб-сканер, разработанный на языке Java. Gecco интегрирует jsoup, httpclient, fastjson, Spring, htmlunit, redission ausgezeichneten framework. Пусть вам нужно всего лишь настроить несколько селекторов стилей jQuery, можно очень быстро написать искатель. .Gecco Framework обладает отличной масштабируемостью, структура основана на принципе открытого и закрытого дизайна, позволяет изменять закрытие, расширение открытого. В то же время время 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!