2016-10-08 4 views
-3

moviemeterからムービーの名前、評価、年を削り取ろうとしていますので、imdbと比較することができます。私はimdbのトップ250の映画をタイトル、評価、ランク、年のデータフレームにしました。ムービーメーターをRに入れました。

url <- rvest::html("https://www.moviemeter.nl/list/") 
scrapemoviemeter <- rvest::html_nodes(x = url, css = ".film_row") 
head(scrapemoviemeter) 
moviemeter <- rvest::html_text(scrapemoviemeter, trim = TRUE) 

今、私は私がにデータを取得するにはどうすればよい

head(moviemeter) 
[1] "4,42 (15202)1. The Shawshank Redemption (1994)"              
[2] "4,36 (9761)2. The Godfather (1972)Alternatieve titel: Mario Puzo's The Godfather" 

でmoviemeterの価値を持っています。しかし、私はこれが私のコード..ですmoviemeterが実行して取得する

をいないようです格付け、タイトル、年別に分離されたデータフレーム?

+0

IMDBのスクレイピングは、利用規約に違反しています。そのため、IMDB IDをIMDBから取得した場合、あなたはその利用規約に違反しています。 MovieMeterにはAPIがあります。 APIを使用するRパッケージ(https://github.com/hrbrmstr/moviemeter)があり、データから派生した作品を公開するときには、引用/帰属をリクエストします。 – hrbrmstr

+0

@indian friends - すべてのテキストを削除する下の回答への編集を提案する代わりに、質問を削除する必要があります –

+0

この質問はどうなりましたか? IMDB + MovieMeter&RからエネルギードリンクとPythonに移行しました。この質問は削除する必要があります。 OPは編集履歴が完全に利用可能であることを知っていますか? – hrbrmstr

答えて

0

xpathsを使用する方が簡単だと思います。あなたはIMDBのIDを持っている場合スクレイピング対MovieMeterのAPIを使用して、この

library(rvest) 
library(stringi) 

url <- rvest::html("https://www.moviemeter.nl/list/") 
scores <- rvest::html_nodes(x = url, xpath = "/html/body/div[1]/div[4]/div/div[3]/*//span[@class='score']") 
scores <- rvest::html_text(scores, trim = TRUE) 
names <- rvest::html_nodes(x = url, xpath = "/html/body/div[1]/div[4]/div/div[3]/*//a[@class='tooltip']") 
names <- rvest::html_text(names, trim = TRUE) 
years <- rvest::html_nodes(x = url, xpath = "/html/body/div[1]/div[4]/div/div[3]//div[@class='film_row']/text() ") 
years <- rvest::html_text(years, trim = TRUE) 
years <- stri_extract(years, regex = "\\b\\d{4}\\b") 
years <- years[!is.na(years)] 

names <- unlist(names) 
scores <- unlist(scores) 
years <- unlist(years) 

df <- cbind(names, scores, years) 
df <- as.data.frame(df) 
1

をお試しください:

library(moviemeter) # devtools::install_github("hrbrmstr/moviemeter") 
library(purrr) 

imdb_ids <- c("tt1107846", "tt0282552", "tt0048199") 

map_df(imdb_ids, function(x) { 
    mm <- mm_get_movie_info(x) 
    mm <- map(mm, ~. %||% NA) # the javascript has nulls, so get rid of them 
    mm[c(1:11)]    # remove posters, countries, genres, actors and directors 
}) -> df 

dplyr::glimpse(df) 
## Observations: 3 
## Variables: 11 
## $ id    <int> 57161, 6465, 33351 
## $ url    <chr> "https://www.moviemeter.nl/film/57161", "https://www.moviemeter.nl/film/6465", "https://www.moviemeter.nl/film/33351" 
## $ year    <int> 2007, 2002, 1955 
## $ imdb    <chr> "tt1107846", "tt0282552", "tt0048199" 
## $ title    <chr> "Theft", "Riders", "Illegal" 
## $ display_title  <chr> "Theft", "Riders", "Illegal" 
## $ alternative_title <chr> NA, "Steal", NA 
## $ plot    <chr> "Een naïeve dorpsjongen wordt verliefd op een crimineel. Guy was altijd een nette beschaafde jongen, wie had er ooi... 
## $ duration   <int> 90, 83, 88 
## $ votes_count  <int> 1, 293, 20 
## $ average   <dbl> 2.00, 2.55, 3.42 

あなたはMovieMeterトップ250でIMDBのトップ250を比較しようとしているなら、あなたは彼らのAPIので、こすりする必要がかなり限られています。

あなたはこの作品から何かを引用し、IMDBを擦ってしまうことに注意してください。 LinkedInは2016年にスクレーパーの束を訴え、人々は今後数カ月/年でさらに真剣に知的財産権を取得するつもりです。

関連する問題