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

OSCHINA-MIRROR/qifeifei-Slit

Клонировать/Скачать
README.md 5.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 03.12.2024 06:26 537e544

Открытый фреймворк для парсинга Slit

1. Особенности Slit

1.1. Хорошая расширяемость, развязка между различными модулями, отлично подходит для разработки собственных фреймворков для парсинга.

1.2. Простота использования и настройки, можно настроить использование браузерного эмулятора для реального сбора данных, проект очень лёгкий.

1.3. Можно настроить многопоточность, определить глубину парсинга, автоматически фильтровать повторяющиеся URL.

1.4. По сравнению с традиционными инструментами для парсинга, Slit может решать проблемы динамических страниц (включая AJAX-страницы), работы с cookie, логина и т. д.

2. Основные модули проекта Slit

2.1. Модуль Fetcher отвечает за извлечение URL из очереди, загрузку страниц и помещение результатов в очередь уже загруженных страниц.

2.2. Модуль Analyzer отвечает за извлечение нужных результатов из уже загруженных страниц, помещение их в очередь результатов сбора и поиск других ссылок на странице для помещения в очередь URL.

2.3. Модуль Store отвечает за обработку результатов из очереди результатов, в соответствии с пользовательскими настройками.

3. Использование Slit

3.1. Определите класс, наследующий AbstractNodeFilter, и реализуйте метод accept() для извлечения узлов со страницы. Пользователи могут определять, какие результаты они хотят извлекать.

3.2. Определите класс, наследующий AbstractFileStore, и реализуйте метод processResultNode() для обработки результатов сбора.

3.3. Запустите проект Slit:

Config config = new Config();
config.setStartUrlList(Arrays.asList("https://git.oschina.net/explore/recommend")); // список URL для сбора
config.setNodeFilterClass(MyNodeFilter.class); // пользовательский класс
config.setFileStoreClass(MyFileStore.class); // пользовательский класс
InitSlit slit = new InitSlit(config);
slit.start(); // запуск, можно настроить количество потоков для разных модулей

4. Использование Slit с браузерным эмулятором

4.1. Определите класс, наследующий AbstractNodeFilter, и реализуйте метод accept() для извлечения узлов со страницы.

4.2. Определите класс, наследующий AbstractFileStore, и реализуйте метод processResultNode() для обработки результатов.

4.3. Определите класс, наследующий AbstractBrowserAction, и реализуйте метод userBrowserAction() для определения поведения браузерного сбора.

4.4. Используйте Chrome-браузер и скачайте соответствующий веб-драйвер для вашей системы с сайта chromedriver.storage.googleapis.com.

4.5. Запустите проект Slit:

Config config = new Config();
config.setNodeFilterClass(MyBrowserNodeFilter.class); // пользовательский класс
config.setFileStoreClass(MyBrowserFileStore.class); // пользовательский класс
config.setInBrowser(true); // включить браузерный режим
config.setBrowserAction(MyBrowserAction.class); // пользовательский класс
config.setBrowserDriverPath("/"); // путь к веб-драйверу
InitSlit init = new InitSlit(config);
init.start();

5. Технологии, используемые в Slit

5.1. Slit зависит от двух JAR-пакетов: «org.htmlparser:htmlparser:2.1» и «org.seleniumhq.selenium:selenium-java:2.45.0», а также от некоторых других пакетов для логирования и т. п.

5.2. Различные модули работают совместно через потокобезопасные неблокирующие очереди.

6. Список используемых JAR-пакетов

В папке src/test/lib проекта уже содержатся следующие JAR-пакеты:

  • «commons-lang:commons-lang:2.6»;
  • «org.htmlparser:htmlparser:2.1»;
  • «org.seleniumhq.selenium:selenium-java:2.45.0»;
  • «ch.qos.logback:logback-classic:1.1.3»;
  • «org.codehaus.groovy:groovy:2.4.3»;
  • «org.slf4j:slf4j-api:1.7.12»;
  • «org.slf4j:jcl-over-slf4j:1.7.12».

7. Демоверсии Slit и способы запуска

Демоверсии доступны в разделе test. Вы можете использовать их как пример для самостоятельного изучения. Для обсуждения вопросов и обмена опытом присоединяйтесь к нашему сообществу, номер группы: 213109134.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/qifeifei-Slit.git
git@api.gitlife.ru:oschina-mirror/qifeifei-Slit.git
oschina-mirror
qifeifei-Slit
qifeifei-Slit
master