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

OSCHINA-MIRROR/jibug-cetty

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

Cetty

Лёгкий фреймворк для краулеров, основанный на событийной модели.

Build Status License

An event dispatch crawler framework.

Функционал

  • Фреймворк для создания краулеров с полностью настраиваемой системой обработки событий.
  • Модульная структура обеспечивает высокую расширяемость.
  • Поддерживает синхронное и асинхронное получение данных на основе HttpClient.
  • Многопоточность.
  • Мощный механизм парсинга веб-страниц на базе Jsoup.

Быстрый старт

Использование Maven

<dependency>
  <groupId>com.jibug.cetty</groupId>
  <artifactId>cetty-core</artifactId>
  <version>0.1.8</version>
</dependency>

Помощь

  1. Подробная документация: http://cetty.jibug.com/
  2. QQ группа

  3. Обратная связь по ошибкам: issues

Пример первого demo

/**
 * Получение заголовков статей с форума Тяньаньмэнь
 * http://bbs.tianya.cn/list-333-1.shtml
 *
 * @author heyingcai
 */
public class Tianya extends ProcessHandlerAdapter {

    @Override
    public void process(HandlerContext ctx, Page page) {
        //Получение Document
        Document document = page.getDocument();
        //dom разбор
        Elements itemElements = document.
                select("div#bbsdoc>div#bd>div#main>div.mt5>table>tbody").
                get(2).
                select("tr");
        List<String> titles = Lists.newArrayList();
        for (Element item : itemElements) {
            String title = item.select("td.td-title").text();
            titles.add(title);
        }

        //Получаем объект Result, передаём наши результаты следующему обработчику
        Result result = page.getResult();
        result.addResults(titles);

        //Через метод fireXXX передаём результаты текущего обработчика следующему
        //В этом примере мы сразу передаём результат в ConsoleHandler, который выводит его на консоль
        ctx.fireReduce(page);
    }

    public static void main(String[] args) {
        //Запуск стартового класса
        Bootstrap.
                me()
                //Синхронный сбор
                .isAsync(false)
                //Запускаем один поток
                .setThreadNum(1)
                //Собираем с URL
                .startUrl("http://bbs.tianya.cn/list-333-1.shtml")       
                //Общая информация о запросе
                .setPayload(Payload.custom())       
                //Добавляем собственный обработчик
                .addHandler(new Tianya())        
                //Добавляем обработчик по умолчанию, выводящий результаты в консоль
                .addHandler(new ConsoleReduceHandler())
                //Включаем режим реального времени или нет. Если режим не включён, то при отсутствии задач в очереди краулер автоматически переходит в состояние close
                .isDuration(false)
                .start();
    }
}

История версий

Версия Описание
0.1.0 Поддержка основных функций краулера
0.1.5 1. Поддержка xpath 2. Исправлена проблема с неработающими cookie 3. Оптимизация базовой логики
0.1.7 Исправление ошибок в базовом коде

Задачи

  • Поддержка аннотаций.
  • Поддержка пулов прокси.
  • Поддержка Berkeley для хранения данных в памяти, что позволит эффективно хранить и получать доступ к большим объёмам URL.
  • Поддержка горячего обновления.
  • Управление краулерами.

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

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

Введение

Лёгкий фреймворк для краулеров, основанный на событийной рассылке. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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