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

OSCHINA-MIRROR/ysc-HtmlExtractor

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

HtmlExtractor — это компонент, основанный на шаблонах и реализованный на Java, который предназначен для точного извлечения структурированной информации из веб-страниц. Он сам по себе не содержит функций краулера, но может быть вызван краулером или другими программами для более точного извлечения информации о структуре веб-страницы.

HtmlExtractor разработан для использования в крупномасштабных распределённых средах и использует архитектуру «главный-подчиненный». Главный узел отвечает за поддержание правил извлечения, а подчиненные узлы запрашивают правила извлечения у главного узла. Когда происходит изменение в правилах извлечения, главный узел активно уведомляет подчиненные узлы, что позволяет реализовать динамическое обновление после изменения правил извлечения.

Как использовать?

Для использования SeleniumHtmlFetcher необходимо установить драйверы:

  • FirefoxDriver: brew install geckodriver.
  • ChromeDriver: brew install chromedriver.

HtmlExtractor состоит из двух подпроектов: html-extractor и html-extractor-web. Html-extractor реализует логику извлечения данных и является подчиненным узлом, а html-extractor-web предоставляет веб-интерфейс для управления правилами извлечения и является главным узлом. HtmlExtractor представляет собой jar-пакет, который можно импортировать через maven:

<dependency>
    <groupId>org.apdplat</groupId>
    <artifactId>html-extractor</artifactId>
    <version>1.1</version>
</dependency>

Html-extractor-web представляет собой war-пакет, который необходимо развернуть на сервере Servlet/Jsp. В каталоге html-extractor-web можно запустить mvn jetty:run, чтобы запустить сервер Jetty, после чего можно открыть браузер и посетить http://localhost:8080/html-extractor-web/api/ для просмотра собственных правил.

Обратите внимание: страница считается успешно извлечённой только в том случае, если все пути CSS и выражения извлечения успешно извлечены. Если хотя бы один путь CSS или выражение извлечения не удалось извлечь, извлечение считается неудачным.

Как использовать HtmlExtractor для точного извлечения структурированной информации на основе шаблонов?

Метод централизованного использования на одном компьютере:

//1、Создание правил извлечения List urlPatterns = new ArrayList<>(); //1.1、Создание шаблона URL UrlPattern urlPattern = new UrlPattern(); urlPattern.setUrlPattern("http://money.163.com/\\d{2}/\\d{4}/\\d{2}/[0-9A-Z]{16}.html"); //1.2、Создание HTML-шаблона HtmlTemplate htmlTemplate = new HtmlTemplate(); htmlTemplate.setTemplateName("网易财经频道"); htmlTemplate.setTableName("finance"); //1.3、Связывание шаблона URL и HTML urlPattern.addHtmlTemplate(htmlTemplate); //1.4、Создание пути CSS CssPath cssPath = new CssPath(); cssPath.setCssPath("h1"); cssPath.setFieldName("title"); cssPath.setFieldDescription("标题"); //1.5、Связывание пути CSS с шаблоном htmlTemplate.addCssPath(cssPath); //1.6、Создание другого пути CSS cssPath = new CssPath(); cssPath.setCssPath("div#endText"); cssPath.setFieldName("content"); cssPath.setFieldDescription("正文"); //1.7、Связывание другого пути CSS с шаблоном htmlTemplate.addCssPath(cssPath); //Можно аналогичным образом создать несколько шаблонов URL urlPatterns.add(urlPattern);

//2、Получение объекта правил извлечения ExtractRegular extractRegular = ExtractRegular.getInstance(urlPatterns); //Обратите внимание: можно динамически изменять правила извлечения с помощью следующих трёх методов //extractRegular.addUrlPatterns(urlPatterns); //extractRegular.addUrlPattern(urlPattern); //extractRegular.removeUrlPattern(urlPattern.getUrlPattern());

//3、Получение инструмента извлечения HTML HtmlExtractor htmlExtractor = new DefaultHtmlExtractor(extractRegular);

//4、Извлечение веб-страницы String url = "http://money.163.com/08/1219/16/4THR2TMP002533QK.html"; HtmlFetcher htmlFetcher = new JSoupHtmlFetcher(); String html = htmlFetcher.fetch(url); List extractResults = htmlExtractor.extract(url, html);

//5、Вывод результатов int i = 1; for (ExtractResult extractResult : extractResults) { System.out.println((i++) + "、Веб-страница " + extractResult.getUrl() + " результаты извлечения"); if(!extractResult.isSuccess()){ System.out.println("Извлечение не удалось:"); for(ExtractFailLog extractFailLog : extractResult.getExtractFailLogs()){ System.out.println("\turl:"+extractFailLog.getUrl()); System.out.println("\turlPattern:"+extractFailLog.getUrlPattern()); System.out.println("\ttemplateName:"+extractFailLog.getTemplateName()); System.out.println("\tfieldName:"+extractFailLog.getFieldName()); System.out.println("\tfieldDescription:"+extractFailLog.getFieldDescription()); System.out.println("\tcssPath:"+extractFailLog.getCssPath()); if(extractFailLog.getExtractExpression()!=null) { System.out.println("\textractExpression:" + extractFailLog.getExtractExpression()); } } continue; } Map<String, List> extractResultItems = extractResult.getExtractResultItems(); for(String field : extractResultItems.keySet()){ List values = extractResultItems.get(field); if(values.size() > 1){ int j=1;

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

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

Введение

HtmlExtractor — это универсальный компонент для точного извлечения структурированной информации с веб-страниц, реализованный на Java и основанный на шаблонах. Этот сайт является зеркальным сайтом HtmlExtractor на Github и используется только для резервного копирования. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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