Как очистить бюджет фильма от IMDB с помощью rvest

Я пытался очистить валовые и бюджетные значения от IMDB.com, используя пакет rvest, но я не могу. Мой код:

library(rvest)    
movie <- html("http://www.imdb.com/title/tt1490017/")   
movie %>% 
html_node("#budget .itemprop") %>%     
html_text() %>%      
as.numeric()

и я получаю

numeric(0)

person thchar    schedule 05.10.2015    source источник
comment
@KevinDTimm В чем именно здесь проблема? OP предпринял достойную попытку решить свою проблему, найдя подходящий пакет и написав код. Это намного лучше, чем 99,999999% недавних вопросов по SO. Я не понимаю, почему за это минусуют.   -  person David Arenburg    schedule 05.10.2015
comment
Какую версию rvest вы используете (используйте sessionInfo() в R, чтобы узнать). Было бы полезно увидеть результаты промежуточных шагов, а не только окончательный результат. Когда я запускаю тот же код, используя последнюю версию rvest из CRAN, я получаю другую ошибку Error: no matches   -  person Stefan Avey    schedule 05.10.2015
comment
Спасибо за ваш ответ. Возможно, вы имеете право. Моя версия rvest 0.2.0   -  person thchar    schedule 07.10.2015


Ответы (2)


Сэм Фирке предложил очень изящное решение. Я просто публикую свой, чтобы показать другую альтернативу для извлечения числового значения. В роли Сэма Фирке я использовал SelectorGadget. Функция html работает нормально. Вместо tidyr, о котором я не знал, что он имеет такую ​​удобную функцию, я использовал gsub:

library(rvest)    
movie <- html("http://www.imdb.com/title/tt1490017/") 
movie %>% 
  html_node(".txt-block:nth-child(11)") %>%
  html_text() %>% 
  gsub("\\D", "", .) %>% 
  as.numeric()

Выход:

[1] 6e+07
person mpalanco    schedule 05.10.2015
comment
Спасибо за ваш ответ, это очень полезно. Я делюсь с вами кодом, чтобы удалить общий фильм %›% html_node(#titleDetails .txt-block:nth-child(13)) %›% html_text() %›% gsub(\\D, , .) %› % as.numeric() - person thchar; 07.10.2015
comment
@thchar Большое спасибо. Это прекрасно работает. Вы создаете какую-то базу данных? Вероятно, вы уже знаете, но в R XML есть еще один пакет, который может оказаться полезным для очистки данных. - person mpalanco; 07.10.2015
comment
Я работаю с набором данных, чтобы прогнозировать качество фильмов на основе методов классификации. К сожалению, у меня нет желаемого эффекта, потому что IMDB не имеет одинаковой структуры на каждой странице. Может быть, мне следует попробовать с библиотекой XML. Есть ли у вас какие-либо идеи ?? - person thchar; 07.10.2015
comment
@thchar Некоторые идеи: текстовые файлы данных Imdb Вы можете проверить некоторые вопросы в stackoverflow, которые могут указать вам на правильное направление. Например, здесь Кроме того, есть несколько блогов, которые могут решать подобные проблемы, такие как это Я знаю, что у Python есть специальный пакет для получения информации из imdb: imdbpy - person mpalanco; 07.10.2015

Вы можете получить значение бюджета следующим образом:

library(tidyr) # for extract_numeric
library(rvest)
movie <- read_html("http://www.imdb.com/title/tt1490017/")
movie %>%
html_nodes("#titleDetails :nth-child(11)") %>%     
  html_text() %>%      
  extract_numeric()

[1] 6e+07

Ваш пример похож на пример в заставка пакета rvest. В этой зарисовке предлагается использовать SelectorGadget, который я использовал, чтобы найти селектор CSS, возвращающий только элемент бюджета. Чтобы увидеть этот элемент, запустите все строки этой серии, кроме последней, и вы поймете, почему я решил разобрать ее с помощью extract_numeric из tidyr.

Вам понадобится последняя версия rvest, чтобы запустить это, так как я использую функцию read_html(), которая заменила html(), используемую в вашем примере.

person Sam Firke    schedule 05.10.2015