ElMaxo / grabber

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

grabber

Сборка сервиса

make build

Запуск

Для запуска сервиса требуется Docker с поддержкой swarm. Перед первым запуском необходимо выполнить make init для инициализации окружения.

make run запустит сервер Postgres и сервис сбора новостей

Остановка сервиса

make stop

Запуск тестов

make local-test

Работа с сервисом

Добавить источник парсинга (lenta.ru):

curl --location --request POST 'http://127.0.0.1:8701/api/v1/grabber/jobs' \
 --header 'Content-Type: application/json' \
 --data-raw '{
   "url": "https://lenta.ru",
   "query": {
     "itemsSelector": {
       "xpath": "//div[@class='\''span4'\'']/div[@class='\''item'\'']/a"
     },
     "titleSelector": {
       "value": "text"
     },
     "linkSelector": {
       "value": "attr",
       "attr": "href"
     },
     "descriptionSelector": {
       "xpath": "//div[@itemprop='\''articleBody'\'']",
       "value": "inner_text"
     },
     "followLinkForDescription": true
   },
   "periodSec": 60
 }'

Добавить источник парсинга (Rambler):

curl --location --request POST 'http://127.0.0.1:8701/api/v1/grabber/jobs' \
--header 'Content-Type: application/json' \
--data-raw '{
  "url": "https://news.rambler.ru",
  "query": {
    "itemsSelector": {
      "xpath": "//div[@class='\''top-main__news-item'\'']"
    },
    "titleSelector": {
      "xpath": "//div[@class='\''top-card__title'\'']",
      "value": "text"
    },
    "linkSelector": {
      "xpath": "//a",
      "value": "attr",
      "attr": "href"
    },
    "descriptionSelector": {
      "xpath": "//meta[@itemprop='\''articleBody'\'']",
      "value": "attr",
      "attr": "content"
    },
    "followLinkForDescription": true
  },
  "periodSec": 60
}'

Получить список активных источников (джобов):

curl --location --request GET 'http://127.0.0.1:8701/api/v1/grabber/jobs'
[
    {
        "id": "1c66cf03-b450-4f9a-9810-58b8ba4ae8ae",
        "periodSec": 60,
        "query": {
            "descriptionSelector": {
                "value": "inner_text",
                "xpath": "//div[@itemprop='articleBody']"
            },
            "followLinkForDescription": true,
            "itemsSelector": {
                "xpath": "//div[@class='span4']/div[@class='item']/a"
            },
            "linkSelector": {
                "attr": "href",
                "value": "attr"
            },
            "titleSelector": {
                "value": "text"
            }
        },
        "url": "https://lenta.ru"
    },
    {
        "id": "84c066e3-adf7-4ac3-8395-02373a0c06f4",
        "periodSec": 60,
        "query": {
            "descriptionSelector": {
                "attr": "content",
                "value": "attr",
                "xpath": "//meta[@itemprop='articleBody']"
            },
            "followLinkForDescription": true,
            "itemsSelector": {
                "xpath": "//div[@class='top-main__news-item']"
            },
            "linkSelector": {
                "attr": "href",
                "value": "attr",
                "xpath": "//a"
            },
            "titleSelector": {
                "value": "text",
                "xpath": "//div[@class='top-card__title']"
            }
        },
        "url": "https://news.rambler.ru"
    }
]

Удалить источник (джоб):

curl --location --request DELETE 'http://127.0.0.1:8701/api/v1/grabber/jobs/1c66cf03-b450-4f9a-9810-58b8ba4ae8ae'

Получить список статей:

curl --location --request GET 'http://127.0.0.1:8701/api/v1/grabber/articles?page=1&rowsPerPage=20'

Поиск статьи:

curl --location --request GET 'http://127.0.0.1:8701/api/v1/grabber/articles?page=1&rowsPerPage=20&q=%D0%BC%D0%B0%D0%BB%D1%8B%D1%88%D0%B5%D0%B2%D0%B0%20%D1%83%D1%81%D1%82%D1%80%D0%B8%D1%86%D0%B0'
[
    {
        "link": "https://lenta.ru/news/2020/10/23/ustric/",
        "title": "Врачи оценили совет Малышевой есть устрицы в пандемию"
    },
    ...
]
curl --location --request GET 'http://127.0.0.1:8701/api/v1/grabber/articles?page=1&rowsPerPage=20&q=%D0%B2%D0%B0%D0%BA%D1%86%D0%B8%D0%BD%D0%B0%20%D0%BF%D0%BE%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BB%D0%B8'
[
    {
        "link": "https://news.rambler.ru/world/45078829-poka-vy-spali-rossiyskuyu-vaktsinu-potrebovali-cherez-sud/",
        "title": "Пока вы спали: российскую вакцину потребовали через суд"
    },
   ...
]

About


Languages

Language:Go 94.9%Language:Makefile 3.0%Language:Dockerfile 2.2%