2016-07-01 10 views
-1

私はウェブサイト(https://www.freedraftguide.com/fantasy-football/rankings/quarterbacks)からテーブルを掻き集めようとしています。私は以下のコードを実行すると、私は次のエラーを取得する:RCurlを使用して、以下のアプローチのXML content does not seem to be XMLR:XMLコンテンツのWebサイトをスクラップするのはXMLではないようです

library("XML") 
library("RCurl") 

readHTMLTable("https://www.freedraftguide.com/fantasy-football/rankings/quarterbacks") 

どれも働いていないのいずれか:

rts.url <- getURL("https://www.freedraftguide.com/fantasy-football/rankings/quarterbacks") 
xmlParse(rts.url) 
xmlInternalTreeParse(rts.url) 
readHTMLTable(rts.url) 

httrではありません成功:

library("httr") 
GET("https://www.freedraftguide.com/fantasy-football/rankings/quarterbacks") 

rvestで成功しません:

library("rvest") 
read_html("https://www.freedraftguide.com/fantasy-football/rankings/quarterbacks") 

私はRSeleniumとあまり馴染みだが、ここではドキュメントの例に基づいて私の試みです:など、この1のようにトリッキーなテーブルの場合

library("RSelenium") 

startServer() 
remDr <- remoteDriver$new() 
remDr$open() 
remDr$navigate("https://www.freedraftguide.com/fantasy-football/rankings/quarterbacks") 

Error: Summary: UnknownError 
Detail: An unknown server-side error occurred while processing the command. 
class: org.openqa.selenium.UnsupportedCommandException 
+0

データがjQueryでロードされているため、RSeleniumのようにページを実行できるものでページをロードする必要があります。 – alistaire

+0

RSeleniumでの試行を追加しましたが、これはあまりよく知られていませんが、マニュアルの例に基づいてエラーが発生しています。助けていただければ幸いです。 – dadrivr

+0

rvest :: htmlで廃止されたという警告が表示されても、rvest :: htmlを使ってxmlを取得できました。xml2 :: read_htmlでエラーが発生しませんでした... – Choubi

答えて

1

、私は多くの場合、Firebugのか、開発者ツールからのxpathを見つけることがわかります多くの場合、最も有用なオプションです。

library("RSelenium") 

startServer() 
remDr <- remoteDriver$new() 
remDr$open() 
remDr$navigate("https://www.freedraftguide.com/fantasy-football/rankings/quarterbacks") 
player_table <- remDr$findElement('xpath', '/html/body/div[2]/div[3]/table/tbody') 

print(player_table$getElementText()) 

players <- strsplit(player_table$getElementText()[[1]], "\n") 

final <- c() 
for(x in players[[1]]){ 
    temp <- unlist(strsplit(x, " ")) 
    final <- rbind(final, temp) 
} 

final <- data.frame(final) 

R> print(head(final)) 
    X1  X2    X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 
1 1. Aaron  Rodgers GNB 4 39 4391 0 2 311 54 27 
2 2.  Cam   Newton CAR 7 33 3982 0 9 651 130 27 
3 3. Andrew   Luck IND 10 36 4769 0 2 283 60 26 
4 4. Drew   Brees NOR 5 33 4925 0 1 41 26 22 
5 5.  Ben Roethlisberger PIT 8 35 4916 0 0 43 31 20 
6 6. Russell   Wilson SEA 5 34 4063 0 4 592 109 20 

私はforループが理想的であることを認識し、時にはこのようなWebページをこするのが最良のオプションをすることができます。

関連する問題