1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xtuhcy-gecco

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ci maven 996.icu

Что такое Gecco

Gecco — это легкий в использовании веб-скрейпер, разработанный с использованием языка Java. Gecco интегрирует такие отличные библиотеки, как jsoup, HttpClient, FastJSON, Spring, HtmlUnit, Redis, что позволяет вам использовать только несколько селекторов в стиле jQuery для быстрого создания скрейпера. Фреймворк Gecco имеет отличную масштабируемость, основан на принципах открыто-закрытой архитектуры, позволяя модифицировать закрытую часть и расширять открытую. В то же время Gecco использует очень открытый лицензионный протокол MIT, будь вы пользователем или разработчиком, желающим совместно улучшить проект, приветствуем ваши pull-requests. Если вам понравился этот фреймворк для создания скрейперов, пожалуйста, добавьте звездочку или форкните проект!

Основные возможности- [x] Легко использовать, извлекать элементы с помощью селекторов в стиле jQuery

  • Поддерживает асинхронные запросы AJAX на странице
  • Поддерживает извлечение JavaScript-переменных со страницы
  • Использует Redis для реализации распределенного парсинга, см. gecco-redis
  • Поддерживает развитие бизнес-логики с использованием Spring, см. gecco-spring
  • Поддерживает расширение htmlunit, см. gecco-htmlunit
  • Поддерживает механизм расширения
  • Поддерживает случайный выбор User-Agent при скачивании
  • Поддерживает случайный выбор прокси-сервера при скачивании## Обзор фреймворка

Архитектурная диаграмма

Установка

Установка через Maven

<dependency>
    <groupId>com.geccocrawler</groupId>
    <artifactId>gecco</artifactId>
    <version>x.x.x</version>
</dependency>

maven

Зависимости проекта

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Цель 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 (часть 1)

Как использовать Java-паук Gecco для получения всей информации о товарах JD (часть 2)Как использовать Java-паук Gecco для получения всей информации о товарах JD (часть 3)

Интеграция Htmlunit для скачивания страниц

Мониторинг пауков

Полный пример, работающий со списками страниц, сочетающий Spring и MySQL для записи данных

Сравнение с похожими инструментами

Список похожих инструментов и их сравнение доступен здесь:

Сравнение программ для веб-архивирования

Контакты и связь

Поддержите автора

Развитие Gecco невозможно без вашей поддержки, сделайте сканером QR-кода и поддержите автора!

Алипай WeChat Pay

Лицензия

Пожалуйста, следуйте открытым протоколам лицензий MIT!

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Gecco — это легковесный и простой в использовании сетевой паук, разработанный на языке Java. Он объединяет в себе отличные фреймворки, такие как jsoup, httpclient, fastjson, spring, htmlunit и redission. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xtuhcy-gecco.git
git@api.gitlife.ru:oschina-mirror/xtuhcy-gecco.git
oschina-mirror
xtuhcy-gecco
xtuhcy-gecco
master