Sign inSign up

nqxcode/getcourse-ru-webscraper

By nqxcode

•Updated about 1 year ago

Web scraper с выкачиванием видеокурсов с getcourse.ru

Image
1

996

nqxcode/getcourse-ru-webscraper repository overview

⁠getcourse-ru-web-scraper

Web scraper для архитектуры arm32v7 или amd64 с возможностью выкачивания видеокурсов с getcourse.ru

Исходный код и файлы конфигурации опубликованы здесь https://github.com/nqxcode/getcourse-ru-web-scraper⁠.

⁠Настройка контейнера

  1. Создайте папку для хранения выкаченный курсов, например, courses в директории пользователя.

Пример: /home/awesomeuser/courses

  1. В созданной папке courses добавьте необходимые конфигурационные файлы:
  • Создайте файл конфигурации .env.

Пример содержимого файла .env для целевого сайта anatomystudy.ru:

SCRAPPER_BASE_URL=https://anatomystudy.ru
SCRAPPER_TRAINING_CONFIG_DIR=anatomystudy.ru

SCRAPPER_AUTH_COOKIE_NAME=PHPSESSID5
SCRAPPER_AUTH_COOKIE_VALUE=7b20ba0b0ebb95b7728e966daa3b5024
SCRAPPER_AUTH_COOKIE_DOMAIN=.anatomystudy.ru

SCRAPPER_DOWNLOAD_PATH="/home/webscraper/app/download/anatomystudy.ru"

SCRAPPER_PHANTOMJS_BIN=/usr/local/bin/phantomjs
SCRAPPER_PHANTOMJS_MAX_BUFFER=1664
  • Создайте файл config/config.json с базовыми настройками headless-браузера phantomjs, парсера ссылок на видео и загрузчика видео файлов.

Пример содержимого файла конфигурации config/config.json :

{
  "scrapper": {
    "phantomjs": {
      "webpage": {
        "settings": {
          "userAgent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"
        },
        "viewportSize": {
          "width": 1920,
          "height": 1080
        }
      }
    },
    "parser": {
      "patterns": [
        "data-master=\"(?<url>[^\"]+)\"",
        "href=\"(?<url>(https?\\:)?(//)?www.youtube.com/watch[^\"]+)"
      ],
      "flags": "g"
    },
    "downloader": {
      "cmdTemplate": "yt-dlp -q --ffmpeg-location \"/usr/bin/ffmpeg\" \"{videoUrl}\" -o \"{outVideoPath}\" ",
      "outVideo": {
        "extension": "mp4"
      }
    }
  }
}
  • Создайте файл config/trainings/{директория-конфига-для-сайта}/trainings.json c адресами для веб-скрапинга.

Здесь {директория-конфига-для-сайта} - значение из параметра SCRAPPER_TRAINING_CONFIG_DIR из файла .env.

Пример файла конфига: config/trainings/anatomystudy.ru/trainings.json:

[
  {
    "title": "Тренинги. Бонусные курсы №2. Тело человека Мышцы. Голова и шея",
    "paths": [
      "/teach/control/lesson/view/id/157209236",
      "/teach/control/lesson/view/id/157209275"
    ]
  },
  {
    "title": "Тренинги. Бонусные курсы №2. Тело человека. Мышцы плечевого пояса",
    "paths":[
      "/teach/control/lesson/view/id/157209372",
      "/teach/control/lesson/view/id/157215322"
    ]
  }
]
  1. Создайте в папке courses подпапки
  • logs - для логов процесса вебскрапинга.
  • download - для скачанных видео-файлов с курсами.
  1. Создайте в папке courses файл docker-compose.yml c содержимым:
version: "3.6"

services:
  webscraper:
    build:
      dockerfile: ./docker/Dockerfile
      context: ./
      args:
        TZ: Europe/Moscow
    volumes:
      - "./config:/home/webscraper/app/config"
      - "./.env:/home/webscraper/app/.env"
      - "./logs:/home/webscraper/app/logs"
      - "./download:/home/webscraper/app/download"
    networks:
      - webscraper
    mem_limit: 1664m
    mem_reservation: 512M
    cpus: 0.5

networks:
  webscraper:
    driver: bridge
  1. Финальный шаг - запуск процесса вебскрапинга с выкачиванием видео-файлов в папку download.

В папке courses запустите контейнер с помощью команды:

docker-compose up

Сразу после сборки контейнера будет запущен процесс вебскрапинга с отображением логов выполнения процесса.

⁠Примеры конфигурационных файлов

Tag summary

Content type

Image

Digest

sha256:bb5e007b1…

Size

444.7 MB

Last updated

about 1 year ago

docker pull nqxcode/getcourse-ru-webscraper:1.0.2-arm32v7