【问题标题】:Creating movie scraping script创建电影抓取脚本
【发布时间】:2015-07-07 00:11:45
【问题描述】:

我正在尝试创建一个电影抓取脚本,但在运行下面的最后一行代码后,我遇到了一个

Error in rbind(deparse.level, ...) : 
  numbers of columns of arguments do not match 

我不知道为什么。

  rottenrate <- function(movie){
              require(RJSONIO)
              link <- paste("http://www.omdbapi.com/?t=", movie, "&y=&plot=short&r=json&tomatoes=true", sep = "")
              jsonData <- fromJSON(link)
              return(jsonData)
            }
            vrottenrate <- Vectorize(rottenrate, "movie", SIMPLIFY = F)

val <- "http://www.fandango.com/valkilmer/filmography/p38142"
    val_movies <- readHTMLTable(val)
    val_movies <- as.data.frame(val_movies)
    val_movie_titles <- subset(val_movies, select = c(NULL.Title))
    val_movie_titles <- as.character(val_movie_titles$NULL.Title) 

val_completed <- do.call(rbind, lapply(vrottenrate(val_movie_titles), function(x) as.data.frame(t(x), stringsAsFactors = FALSE)))

【问题讨论】:

  • (a) 有一个omdbapi R package 和 (b) 你违反了 Fandango 的 Terms of Use 并且任何帮助你提供涉及 Fandango 的代码示例的人也违反了并受到罚款和判决.
  • @hrbrmstr 指出这一点很重要。但我的感觉是,SO 应该考虑如何处理此类案件的政策。我不是律师,但我最近一直在想这个问题:如果一个人在回答 SO 上发布的问题时可能会遇到法律问题,人们可能想知道 SO 在这种情况下也会在多大程度上负责,因为它在网站上发布了这个问题,因此可以说 SO 默许了提交有效答复。为什么还要发布这个问题?
  • @hrbrmstr:您是否为全世界的任何读者提供合格的法律意见?据我记得我还没有签署那个 ToS,所以我不确定它是否适用于我。 (我在英国,如果这会影响您的建议)。
  • 无论您喜欢与否,都适用 ToS。是否支持非法活动并因此承担任何后果取决于您。
  • 这不是合法的“建议”,它是在警告人们,如果不阅读和遵守大多数人不遵守的网站法律服务条款,他们可能会陷入麻烦似乎认为意味着什么。他们是这样。我有 3 个朋友收到停止和终止信函。它们非常真实。

标签: r web-scraping movies


【解决方案1】:

一个简单的解决方案是使用来自dplyr 包的bind_rows 或来自data.table 包的rbindlist

 kk<-lapply(vrottenrate(val_movie_titles), function(x) as.data.frame(t(x), stringsAsFactors = FALSE))

 library(dplyr)
 bind_rows(kk)

library(data.table)
rbindlist(kk,fill=TRUE)

【讨论】:

  • 对于 OP 问题的 Fandango 部分对 OP 的任何帮助都会使您违反对 OP q 的评论的 Fandango ToS。
  • @hrbrmstr 也许不是。无论如何,引用您自己之前的评论很难算作对您意见的支持。
猜你喜欢
  • 2011-02-05
  • 1970-01-01
  • 2012-03-23
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多