我想从这里得到一张桌子 网站: http://www.oddsportal.com/american-football/usa/nfl-2012-2013/results/
我实际上想把桌子放在页面中间。
我尝试了不同的方法,但徒劳无功。
library("rvest")
library(dplyr)
url1 <- "http://www.oddsportal.com/american-football/usa/nfl-2012-2013/results/"
table <- url1 %>%
read_html() %>%
html_nodes(xpath='//*[@id="tournamentTable"]') %>%
html_table(fill = T)
这不起作用,因为我认为该表未定义为表。
我还尝试使用以下方法单独获取行:
df <- mps1 %>%
html_nodes(css = "tr.odd.deactivate,tr.center.nob-border")
但它什么也没得到。
知道我该怎么做?
感谢
答案 0 :(得分:3)
根据以前试图从此网站获取的问题,此表可能是动态生成的。据我所知,处理这类页面的唯一方法是使用RSelenium
- 这基本上可以自动化浏览器。
经过大量试验和错误后,以下代码似乎有效(在Windows 10上使用Chrome)...
library(RSelenium)
library(rvest)
library(dplyr)
url <- "http://www.oddsportal.com/american-football/usa/nfl-2012-2013/results/"
rD <- rsDriver(port=4444L,browser="chrome")
remDr <- rD$client
remDr$navigate(url)
page <- remDr$getPageSource()
remDr$close() #you can leave open if you are doing several of these: close at the end
table <- page[[1]] %>%
read_html() %>%
html_nodes(xpath='//table[@id="tournamentTable"]') %>% #specify table as there is a div with same id
html_table(fill = T)
table <- table[[1]]
head(table)
American Football» USA»NFL 2012/2013 American Football» USA»NFL 2012/2013 American Football» USA»NFL 2012/2013 American Football» USA»NFL 2012/2013 American Football» USA»NFL 2012/2013 American Football» USA»NFL 2012/2013
1 03 Feb 2013 - Play Offs 03 Feb 2013 - Play Offs 03 Feb 2013 - Play Offs 03 Feb 2013 - Play Offs 1.00 2.00
2 NA NA
3 23:30 San Francisco 49ers - Baltimore Ravens San Francisco 49ers - Baltimore Ravens 31:34 1.49 2.71
4 28 Jan 2013 - All Stars 28 Jan 2013 - All Stars 28 Jan 2013 - All Stars 28 Jan 2013 - All Stars 1.00 2.00
5 NA NA
6 00:00 NFC - AFC NFC - AFC 62:35 2.03 1.83
American Football» USA»NFL 2012/2013
1 B's
2
3 9
4 B's
5
6 9
不幸的是,赔率以十进制数字出现,但希望你可以使用它。