Gecco — это легкий в использовании веб-скрейпер, разработанный с использованием языка Java. Gecco интегрирует такие отличные библиотеки, как jsoup, HttpClient, FastJSON, Spring, HtmlUnit, Redis, что позволяет вам использовать только несколько селекторов в стиле jQuery для быстрого создания скрейпера. Фреймворк Gecco имеет отличную масштабируемость, основан на принципах открыто-закрытой архитектуры, позволяя модифицировать закрытую часть и расширять открытую. В то же время Gecco использует очень открытый лицензионный протокол MIT, будь вы пользователем или разработчиком, желающим совместно улучшить проект, приветствуем ваши pull-requests. Если вам понравился этот фреймворк для создания скрейперов, пожалуйста, добавьте звездочку или форкните проект!
<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();
}
}
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 (часть 1)
Как использовать Java-паук Gecco для получения всей информации о товарах JD (часть 2)Как использовать Java-паук Gecco для получения всей информации о товарах JD (часть 3)
Интеграция Htmlunit для скачивания страниц
Полный пример, работающий со списками страниц, сочетающий Spring и MySQL для записи данных
Список похожих инструментов и их сравнение доступен здесь:
Сравнение программ для веб-архивирования
Развитие Gecco невозможно без вашей поддержки, сделайте сканером QR-кода и поддержите автора!
Пожалуйста, следуйте открытым протоколам лицензий MIT!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )