Skip to content

Это консольный вариант. Данное приложение парсит фильмы по новому интерфейсу "КиноПоиск +" (https://plus.kinopoisk.ru/) и выводит один фильм в качестве рекомендации.

Notifications You must be signed in to change notification settings

flexaccess/kinopoisk_plus_parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RUBY PARSER FOR PLUS.KINOPOISK.RU

Ruby: 2.3.1

Gem Mechanize: 2.7.5


Описание приложения

Это консольный вариант.

Данное приложение парсит фильмы по новому интерфейсу "КиноПоиск +" (https://plus.kinopoisk.ru/) и выводит один фильм в качестве рекомендации.

0. Страницы для парсинга

Адреса страниц (алгоритмы) для парсера находятся в файле algorithm.json - в данном случае, там находятся адреса с определенными фильтрами, которые можно подобрать под свой вкус.

1. Парсинг

Далее приложение выбирает случайным образом один из алгоритмов и проходится по всем страницам сайта (но не более 50), складируя все доступные данные о фильмах.

1.2. Возможные ошибки

Так как КиноПоиск, наблюдая высокую активность парсера, может его заблокировать, то, для недопущения поломки приложения приняты следующие меры:

  1. Если блокировка была осуществлена во время парсинга любой из страниц, кроме первой, то приложение прекратит сканирование страниц и продолжит дальнейшую работу.
  2. Если блокировка была осуществлена во время парсинга первой страницы, то, заместо данных, будет записана строка с ошибкой ERROR: EMPTY PARAMS FOR GENERATE ARRAY и приложение продолжит свою работу.

2. Поиск

Далее по спарсенному материалу производится поиск по следующим параметрам:

  1. Название
  2. Страна и дата создания
  3. Ссылка на фильм
  4. Ссылка на изображение (280x178 px)

3. Запись данных в JSON

После поиска материалов, генерируется хэш следующего вида:

{
    date: '2017-10-03',
    data: [
	    {
	    	param1: "Унесённые призраками",
	    	param2: "Япония, 2001",
	    	param3:  "https://plus.kinopoisk.ru/film/370/",
	    	param4: "//avatars.mds.yandex.net/get-kino-vod-films-gallery/33804/2a00000151734e3f7412fd167b563973c1c2/280x178"
	    },
	    {
	    	param1: "Умница Уилл Хантинг",
	    	param2: "США, 1997",
	    	param3: "https://plus.kinopoisk.ru/film/539/",
	    	param4: "//avatars.mds.yandex.net/get-kino-vod-films-gallery/28788/2a0000015184de4cc54088d640d3d592e845/280x178"
	    }
    ]
}

И записывается в файл <порядковый_номер_алгоритма.json>. Например: 4.json

Таким образом, все фильмы по случайно выбранному алгоритму будут лежать в файле с порядковым номером этого алгоритма.

4. Вывод фильма

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

4.1. Есть JSON файл?

Поэтому, после того, как приложение выбрало случайный алгоритм - оно проверяет, нет ли уже спарсенных фильмов.

4.1.1. Есть JSON

Если есть - вызывается метод random_film, он генерирует случайный фильм и возвращает строку.

Строка будет выглядеть следующим образом:

Фильм: В диких условиях, США, 2007

Чтобы вывести остальные данные, необходимо в методе random_film добавить соответствующие параметры.

Таблица параметров:

Название Вызов
Название фильма film['param1']
Страна и год film['param2']
Ссылка на фильм film['param3']
Изображение film['param4']
4.1.2. Нет JSON

Если JSON файла с уже отпарсенными по выбранному алгоритму фильмов нет, то приложение перейдет к пункту 1. Парсинг

4.2. Актуальность данных

Также важно, чтобы JSON файл периодически обновлялся. Поэтому, перед выводом фильма, приложение проверяет дату в JSON файле. Если дата больше 7 + порядковый_номер_алгоритма дней, то приложение спарсит новые данные и перепишит файл.

4.3. Ошибки

Так как при парсинге могла возникнуть ошибка, которую мы обозначили строкой в пункте 1.2. Возможные ошибки, то перед выводом, осуществляется проверка на строку. Если спарсенные данные - это строка - то просто выводим ее.

Начало работы

После скачивания, можно пользоваться сразу же. Для настройки алгоритмов, нужно:

  1. Очистить папку films от всех файлов
  2. В файле algorithm.json записать свои алгоритмы

И готово.

About

Это консольный вариант. Данное приложение парсит фильмы по новому интерфейсу "КиноПоиск +" (https://plus.kinopoisk.ru/) и выводит один фильм в качестве рекомендации.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages