Удалить заголовки из сканирования - PullRequest
0 голосов
/ 11 января 2019

Работа над Storm Crawler 1.13 и Elastic Search 6.5.2. Работаем в TextExtractor. Я исключаю теги script и style аналогично, я хочу удалить теги header . Я применяю приведенную ниже конфигурацию, но она не распространяется на все результаты. Я хочу оставить h1 , h2 , h3 , удалить только header named tags. Какие-либо предложения.

Веб-страница

<header id="section-header" class="section section-header">
</header>

<h1 class="title" id="page-title">Good Morning..</h1>

crawlerconf.yaml

  textextractor.include.pattern:
   - DIV[id="maincontent"]
   - DIV[itemprop="articleBody"]
   - ARTICLE

  textextractor.exclude.tags:
   - STYLE
   - SCRIPT
   - HEADER
   - FOOTER

1 Ответ

0 голосов
/ 16 января 2019

Я не смог воспроизвести вашу проблему на моей локальной машине. Это может быть недостаток конфигурации на вашей стороне или сайты, на которые вы ссылаетесь, являются особыми.

Вы убедились, что ваш пользовательский crawler-conf.yaml правильно загружен и textextractor.exclude.tags включены в загруженную конфигурацию?

Я сделал следующие шаги, пытаясь воспроизвести ваш вопрос:

  1. Я проверил 1.13 исходные версии StormCrawler.
  2. Я добавил следующий модульный тест к TextExtractorTest.java:
    @Test
    public void testRemoveHeaderElements() throws IOException {
        Config conf = new Config();
        HashSet<String> excluded = new HashSet<>();
        excluded.add("HEADER");
        excluded.add("FOOTER");
        excluded.add("SCRIPT");
        excluded.add("STYLE");
        conf.put(TextExtractor.EXCLUDE_PARAM_NAME, PersistentVector.create(excluded));

<pre><code>    HashSet&lt;String&gt; included = new HashSet&lt;&gt;();
    included.add("DIV[id=\"maincontent\"]");
    included.add("DIV[itemprop=\"articleBody\"]");
    included.add("ARTICLE");
    conf.put(TextExtractor.INCLUDE_PARAM_NAME, PersistentVector.create(included));

    TextExtractor extractor = new TextExtractor(conf);

    String content = "&lt;header id=\"section-header\" class=\"section section-header\"&gt;&lt;/header&gt;&lt;h1 class=\"title\" id=\"page-title\"&gt;Good Morning..&lt;/h1&gt;";

    Document jsoupDoc = Parser.htmlParser().parseInput(content,
            "http://stormcrawler.net");
    String text = extractor.text(jsoupDoc.body());

    assertEquals("Good Morning..", text);
}

Этот модульный тест на компоненте TextExtractor успешно пройден. Затем я загрузил веб-сайт со следующим HTML-кодом на локальный развернутый веб-сервер:

<header id="section-header" class="section section-header">
</header>



Good Morning..


Извлеченное текстовое содержимое: Good Morning.., которое должно соответствовать вашим требованиям.

...