Как сканировать определенные c данные с веб-сайта с помощью Stormcrawler - PullRequest
1 голос
/ 18 июня 2020

Я просматриваю новостные веб-сайты с помощью Stormcrawler (v 1.16) и сохраняю данные в Elasticsearch (v 7.5.0). Мой файл crawler-conf выглядит как файлы stormcrawler . Я использую кибану для визуализации. Мои проблемы:

  • При сканировании новостного веб-сайта мне нужны только URL-адреса содержания статьи, но я тоже получение URL-адресов объявлений, других вкладок на веб-сайте. Что и где мне нужно внести изменения Ссылка Kibana
  • если мне нужно получить только определенные c вещи из URL-адреса (например, только заголовок или только контент), как мы можем это сделать.

EDIT: Я думал добавить поле в индекс контента. Итак, я внес изменения в src / main / resources / parsefilter. json, ES_IndecInit. sh и Crawler-conf.yaml. XPATH, который я добавил, правильный. Я добавил как

"parse.pubDate":"//META[@itemprop=\"datePublished\"]/@content"

в parsefilter.

parse.pubDate =PublishDate

в crawler-conf и добавлено

PublishDate": { "type": "text", "index": false, "store": true}

в свойствах ES_IndexInit. sh. Но все же я не получаю поля с именем PublishDate в kibana или elasticsearch. ES_IndexInit. sh сопоставление выглядит следующим образом:

{
  "mapping": {
    "_source": {
      "enabled": false
    },
    "properties": {
      "PublishDate": {
        "type": "text",
        "index": false,
        "store": true
      },
      "content": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "description": {
        "type": "text",
        "store": true
      },
      "domain": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "host": {
        "type": "keyword",
        "store": true
      },
      "keywords": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "title": {
        "type": "text",
        "store": true
      },
      "url": {
        "type": "keyword",
        "store": true
      }
    }
  }
}

1 Ответ

2 голосов
/ 18 июня 2020

Один из подходов к индексации только новостных страниц сайта - полагаться на карты сайта, но не все сайты будут предоставлять их.

В качестве альтернативы вам понадобится механизм как часть синтаксического анализа, возможно ParseFilter, чтобы определить, что страница является новостью, и фильтрует на основе наличия ключа / значения в метаданных во время индексации.

Как это делается в наборе данных сканирования новостей из CommonCrawl - это то, что исходные URL-адреса являются картами сайта или RSS-каналами.

Чтобы не индексировать контент, просто закомментируйте

  indexer.text.fieldname: "content"

в конфигурации.

...