网页从未定义的表格中获取rvest

时间:2017-08-18 15:04:27

标签: r web-scraping rvest

我想从这里得到一张桌子 网站: 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")

但它什么也没得到。

知道我该怎么做?

感谢

1 个答案:

答案 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

不幸的是,赔率以十进制数字出现,但希望你可以使用它。