?

Log in

No account? Create an account
dump -0f - /dev/mind
Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов
Поиск по русским именам фильмов на imdb.com и автоматическое извлечение данных о фильме оттуда же 
17th-Mar-2008 06:21 pm
Сегодня я с некоторым офигением обнаружил, что можно вбить в Google поисковый запрос "Кто вы, мистер Брукс? site:imdb.com" и получить первым результатом ссылку на страницу этого фильма на imdb.com.

Не выходя из состояния офигения, я достал из загашников старый полу-работающий скриптик для извлечения основных данных о фильме с imdb.com и довел его до работоспособного состояния.

Кому интересно, скрипт и пример его использования - под катом.

Вот скрипт:

#!/bin/bash
request="$@"
file="imdb_dump.html"

wget -U Firefox "http://www.google.com/search?q=$request site:imdb.com&btnI=I\`m Feeling Lucky" -O "$file"

title=$(grep "<title>" "$file" | sed -e 's/<[^ ]*>//g')
rating=$(grep -A1 "<b>User Rating:</b>" "$file" | grep -o '[0-9][0-9./]*')
votes=$(grep -o '[0-9,]* votes' "$file")
genre=$(grep -A1 "<h5>Genre:</h5>" "$file" | grep -o ">[A-Z][a-zA-Z]*<" \
               | sed -e 's/[<>]//g' | paste - - - - - - - - - | sed -e 's/[ \t]*$//' -e 's/\t/,/g')
url=http://www.imdb.com/$(grep -o 'title/tt[0-9]*' "$file" | head -1)

echo "$request|$title|$url|$genre|$rating|$votes" | tee -a movies.csv


Запустив скрипт (пусть он лежит в файле imdb-search.sh) вот так: "imdb-search.sh Кто вы, мистер Брукс", вы получите на экране такой вот результат:


Кто вы, мистер Брукс?|Mr. Brooks (2007)|http://www.imdb.com/title/tt0780571|Crime,Drama,Mystery,Thriller|7.6/10|27,269 votes


Все эти данные будут продублированы в файле movies.csv, в текущей директории. Можно сделать несколько запросов, загрузить movies.csv в oocal или excel и там их покрутить.

PS
Это в связи с вновь доступным "безлимитным" интернетом мы разгребаем список "а вот это, возможно, хотелось посмотреть" :)
Comments 
17th-Mar-2008 04:48 pm (UTC) - поделитесь пожалуйста списком
Если возможно, поделитесь пожалуйста Вашим списком "а вот это, возможно, хотелось посмотреть".
17th-Mar-2008 04:55 pm (UTC)
Мне лично было удобнее скачать их базу локально и проводить поиск уже по ней. :)
17th-Mar-2008 09:49 pm (UTC)
А я про эту тему знал, но - наоборот, никогда руки не доходили :(
17th-Mar-2008 05:56 pm (UTC) - приколись, вот так тоже работает
Anonymous
imdb:"pulp fiction"
и это куда правильнее, чем "поиск по сайту", заданный через site:imdb.com
17th-Mar-2008 06:30 pm (UTC) - Re: приколись, вот так тоже работает
почему это правильнее? два результата с imdb, остальное левак
17th-Mar-2008 06:40 pm (UTC)
Однако. Никогда в голову не приходила такая идея. Я, обычно, фильмы на посмотреть выбираю не так. Беру какое-либо кино, которое мне понравилось. После этого иду на Википедию, нахожу этот фильм и брожу по всем линкам на странице - по именам актеров, датам, наградам и т.п. Что понравилось - записываю. И не только кино :). Как-то, начав читать про виноделие, добрел до отрезания голов шахидами (вино - Франция - революция - гильотина - декапитация - война в Ираке). Эвристический метод такой :). А тут - чистая математика :).
17th-Mar-2008 09:52 pm (UTC)
Ну, у меня задача была чуть другая - "просеять" список названий, которые когда-то почему-то были записаны в "черную книжечку" и отделить то, что стоит смотреть, от того, что не стоит.

Imdb score в этом деле - хорошее первое приближение. А дальше уже можно идти по выдернутой ссылке и смотреть актеров-режисеров и прочее краткое изложение сюжета.
17th-Mar-2008 07:41 pm (UTC)
Интересно, почему всем почти всегда (и мне тоже) проще кажется написать grep x | sed s/y/z/, чем sed -n '/x/ s/y/z/p', хотя второе, вроде сильно короче...

Кстати, выдержка из копирайтов имдб: Robots and Screen Scraping: You may not use data mining, robots, screen scraping, or similar data gathering and extraction tools on this site, except with our express written consent as noted below.

Но несмотря на то, что именно туда идёт ссылка с сайта выкачки их полной базы данных, я сходу не обнаружил в тексте лицензии про ограничения на БД. Странные они.
17th-Mar-2008 07:42 pm (UTC)
PS. А за привлечение внимания к греповскому флажку -o большое спасибо. Мне его очень не хватало, а почему-то в мане мимо него всегда смотрел... :)
17th-Mar-2008 09:07 pm (UTC)
Спасибо, крайне полезный скрипт!
18th-Mar-2008 08:34 pm (UTC)
Дима, а не пробовал на питоне или руби такие вещи писать, или нам молодежи не понять стариков у которых баш в в крови? :)
19th-Mar-2008 12:45 pm (UTC)
Дима, вопрос: поломается ли скрипт, если у wget отобрать `-U Firefox'?
19th-Mar-2008 06:56 pm (UTC)
Поломается. Wget перестанут пускать на imdb (403).
20th-Mar-2008 12:55 am (UTC)
Может быть, wget -q, чтобы экран не засорять?
27th-Mar-2008 11:31 pm (UTC)
Да, безусловно.
13th-Apr-2008 11:41 pm (UTC)
Полезный скрипт. И для изучения тоже, спасибо, узнал кое-что новое.
26th-Jun-2008 06:04 am (UTC) - Еще одна поправочка
Для отображения жанров, содержащих символ "-" (таких как Sci-Fi, например), необходимо немножко поправить строку с определением переменной genre:
grep -o ">[A-Z][a-zA-Z]*<"
заменить на
grep -o ">[A-Z][a-zA-Z-]*<"

P.S. Спасибо за скрипт, сам недавно хотел написать на перле, а оказалось, уже есть Ваш на баше :)
This page was loaded Sep 21st 2019, 11:04 am GMT.