Pull to refresh

Comments 12

«Web scraping», чую серьезно отстал от жизни… в мое время это называлось просто парсинг.

Спасибо за анализ данных.

а зачем было читать imdb, если кинопоиск показывает его рейтинг у себя?
Пожалуйста. Термины скрэпинг и парсинг часто подменяют друг друга. Можно встретить, что в одном абзаце автор называет свои действия скрэпингом, а в другом парсингом.
Действительно, рейтинги и голоса IMDB отображаются на кинопоиске и для анализа данных лучше было бы получить всю информацию с одного источника. Но для меня важно было ещё и «набить» руку, а в этом плане прочитать два сайта лучше, чем один. Ну и плюс тогда бы нельзя было построить график со средними оценками жанров на IMDB
Тоже не очень понятно, зачем там какие-то дополнительные библиотеки, если сразу можно в тексте строку нужную искать.
Доброго времени суток.
На диаграмме «рассеяния разницы в оценках в зависимости от числа голосов...» бросаются в глаза 2 аномальные точки. Стало любопытно, что за фильмы?
+.
Ну и логарифмический масштаб бы не помешал, по оси абсцисс.
Здравствуйте. Аномальная точка на графике — это фильм «Крым», о причинах такой аномалии я написал в заключении. Вторая точка — это моя ошибка, случайно загрузил старый файл, который я делал до конечной очистки данных.
Интересно было бы посмотреть по жанрам, как отличаются оценки на этих площадках. Таким образом можно было бы понять специфику российской аудитории по сравнению с условно «усредненным по миру» imdb. Например, отсортировать жанры по разнице между средней или медианной оценкой на 2 площадках для фильмов с числом голосов 10000+ или типа того.
К сожалению, моя база данных слишком мала для того, чтобы сделать нормальную выкладку, но вот что получается если посчитать среднюю разницу в оценках между кинопоиском и imdb для фильмов с более 10000 голосов на обоих сайтах. Таблица для жанров, которые упоминаются более 150 раз. Положительная дельта — это выше оценка на кинопоиске. Народ на Кинопоиске больше любит мелодрамы, фэнтази и комедии.
image

Спасибо, полезная статья по демонстрации практических возможностей R.


А ещё меня приятно удивило качество кода (оформление и использованные подходы). Пара вещей, которые бросились в глаза:


  • Достаточно много мест, читаемость которых может улучшить использование pipe-оператора %>%. Например, вот эти строки можно записать как одну цепочку операций без ненужных переприсваиваний.
  • Вы подгружаете весь пакет tidyverse, а используете только функции из stringr. Можно было бы использовать побольше tidyverse функций, что тоже упростило бы читаемость. Например, вместо этой и этой строк можно было использовать map_dfr() из пакета purrr (и опять же можно было не использовать "лишнюю" переменную table).
  • Использование явных методов обобщённых (generic) функций обоснованно только в редких случаях (например, когда очень важны несколько десятков микросекунд). Поэтому вместо rbind.data.frame здесь лучше использовать просто rbind. Или вообще вместо всей команды функцию bind_rows().
Спасибо за советы, буду применять их на практике.
А почему был выбран именно R? В python например есть отличное решение для парсинга — scrapy. За счет того, что сразу посылается несколько запросов, и их обработка идет по мере получения ответа, работа займет намного меньше времени. А ваш скрипт насколько я понимаю последовательно идет по годам/страницам.
Ну чтобы писать код на питоне, нужно его для начала изучить))) Этим я и собираюсь заняться в ближайшее время.
Sign up to leave a comment.

Articles