2017-08-18 2 views
0

Je suis en train d'obtenir une table de ce site : http://www.oddsportal.com/american-football/usa/nfl-2012-2013/results/éraflure Web avec rvest d'une table qui n'est pas défini

Je veux vraiment obtenir la table au milieu de la page.

J'ai essayé différentes façons mais en vain.

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) 

Cela ne fonctionne pas car je crois que la table n'est pas définie comme table.

J'ai aussi essayé de saisir les lignes séparément en utilisant:

df <- mps1 %>% 
    html_nodes(css = "tr.odd.deactivate,tr.center.nob-border") 

mais il obtient rien.

Une idée comment puis-je le faire?

grâce

Répondre

2

Basé sur les questions précédentes par des personnes essayant de gratter sur ce site, ce tableau est probablement généré dynamiquement. Pour autant que je sache, la seule façon de traiter des pages comme celle-ci est d'utiliser RSelenium - qui automatise essentiellement un navigateur.

Après beaucoup d'essais et d'erreurs, le code suivant semble fonctionner (en utilisant Chrome sur Windows 10) ...

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 

Les chances sont à venir comme des nombres décimaux, malheureusement, mais nous espérons que vous pouvez travailler avec ça.

+0

Merci beaucoup! Je pensais que RSelenium est utilisé pour naviguer dans la page. (cliquez sur les boutons, etc.) –