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

OSCHINA-MIRROR/xiaohuo-SeimiCrawler

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

Сеими Краулер

An agile, powerful, standalone, distributed crawler framework.

Цель Сеими Краулера — стать самым полезным краулером на Java.

Введение

Сеими Краулер — это быстрый, независимый и распределённый фреймворк для краулеров на Java, который призван снизить порог входа для новичков в создании эффективных и высокопроизводительных краулерных систем, а также повысить эффективность разработки таких систем. В мире Сеими Краулера большинству людей достаточно сосредоточиться на написании логики для извлечения данных, а всё остальное сделает Сеими.

В основе Сеими Краулера лежит идея, вдохновлённая фреймворком Scrapy для Python, с добавлением особенностей языка Java и характеристик Spring. Сеими Краулер использует JsoupXpath (отдельное расширение, не являющееся частью jsoup) в качестве HTML-парсера по умолчанию, который использует XPath для анализа и извлечения данных из HTML. Кроме того, Сеими Краулер полностью решает проблемы с динамической генерацией страниц и их извлечением благодаря интеграции с SeimiAgent.

Дополнительно

  • 2016.04.14

SeimiAgent, разработанный на основе Qtwebkit и совместимый с основными браузерами (Chrome, Safari и т. д.), может работать на сервере и предоставлять API через HTTP-протокол, что позволяет использовать его с любым языком или фреймворком. SeimiCrawler уже поддерживает использование SeimiAgent в версии v0.3.0 и добавил демонстрационный код (demo).

  • 2016.01.05

Доступен плагин maven-seimicrawler-plugin для удобной упаковки и развёртывания проектов на основе SeimiCrawler.

Принцип работы

Основной принцип

Принцип кластера

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

Добавьте зависимость Maven (последняя версия центрального Maven-репозитория 1.3.5):

<dependency>
    <groupId>cn.wanghaomiao</groupId>
    <artifactId>SeimiCrawler</artifactId>
    <version>1.3.5</version>
</dependency>

Создайте класс краулера в пакете crawlers:

@Crawler(name = "basic")
public class Basic extends BaseSeimiCrawler {
    @Override
    public String[] startUrls() {
        return new String[]{"http://www.cnblogs.com/"};
    }
    @Override
    public void start(Response response) {
        JXDocument doc = response.document();
        try {
            List<Object> urls = doc.sel("//a[@class='titlelnk']/@href");
            logger.info("{}", urls.size());
            for (Object s:urls){
                push(new Request(s.toString(),"getTitle"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void getTitle(Response response){
        JXDocument doc = response.document();
        try {
            logger.info("url:{} {}", response.getUrl(), doc.sel("//h1[@class='postTitle']/a/text()|//a[@id='cb_post_title_url']/text()"));
            //do something
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Затем добавьте основной метод запуска в любом пакете:

public class Boot {
    public static void main(String[] args){
        Seimi s = new Seimi();
        s.start("basic");
    }
}

Это самый простой способ создания системы краулинга.

Упаковка и развёртывание

Приведённый выше код удобен для разработки и отладки, но также может быть использован в производственной среде. Однако для упрощения упаковки и развёртывания SeimiCrawler предоставляет специальный плагин, который упаковывает проект.

Добавьте плагин в файл pom:

<plugin>
    <groupId>cn.wanghaomiao</groupId>
    <artifactId>maven-seimicrawler-plugin</artifactId>
    <version>1.2.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
    <!--<configuration>-->
        <!-- 默认target目录 -->
        <!--<outputDirectory>/some/path</outputDirectory>-->
    <!--</configuration>-->
</plugin>

Выполните команду mvn clean package, чтобы создать упакованный проект. Структура каталога после упаковки выглядит следующим образом:

.
├── bin             # 相应的脚本中也有具体启动参数说明介绍,在此不再敖述
│   ├── run.bat    #windows下启动脚本
│   └── run.sh     #Linux下启动脚文
└── seimi
    ├── classes     #Crawler工程业务类及相关配置文件目录
    └── lib         #工程依赖包目录

Теперь проект готов к распространению и развёртыванию.

Подробнее см. maven-seimicrawler-plugin.

Дополнительная документация

Для получения дополнительной информации рекомендуется обратиться к примерам в демо-проекте. Более подробные инструкции можно найти на главной странице SeimiCrawler.

Сообщество

Пожалуйста, посетите главную страницу SeimiCrawler для получения более подробной информации. У всех есть вопросы или предложения? Сейчас можно всё это обсудить через список рассылки, который приведён ниже. Прежде чем написать своё первое сообщение, нужно подписаться и дождаться одобрения (в основном это нужно для того, чтобы отфильтровать рекламные объявления и т. п.).

  • Подписка: отправьте письмо на адрес seimicrawler+subscribe@googlegroups.com.

  • Выступление: отправьте письмо по адресу seimicrawler@googlegroups.com.

  • Отписка: отправьте письмо на seimicrawler+unsubscribe@googlegroups.com.

  • Группа в QQ: 557410934.

Обратите внимание: это возможность свободно общаться с другими участниками.

  • Подписаться на обновления также можно через официальный аккаунт в WeChat.

Здесь будут публиковаться статьи о примерах использования программы, а также новости о последних изменениях в проектах, связанных с системой Seimi.

Change log

Пожалуйста, ознакомьтесь с файлом ChangeLog.md.

Исходный код проекта

Github.

Кстати: если вам нравится этот проект, добавьте его в избранное на Github. Я не против ^_^.

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

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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