Coder Social home page Coder Social logo

flexaccess / kinopoisk_plus_parser Goto Github PK

View Code? Open in Web Editor NEW
4.0 0.0 1.0 68 KB

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

Ruby 100.00%
html-parser kinopoisk json mechanize movie

kinopoisk_plus_parser's Introduction

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 записать свои алгоритмы

И готово.

kinopoisk_plus_parser's People

Stargazers

 avatar  avatar  avatar  avatar

Forkers

vinosgrayapple

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.