2017-10-09 21 views
1

Je suis en train de gratter odds bookmakers de cette page:rvest web de grattage de la page html

https://www.interwetten.com/en/sportsbook/top-leagues?topLinkId=1

j'ai donc écrit le code suivant jusqu'à présent

interwetten <- read_html("https://www.interwetten.com/en/sportsbook/top-leagues?topLinkId=1") 
bundesliga <- html_nodes(interwetten, xpath = '//*[@id="TBL_Content_1019"]') 
bundesliga_teams <- html_nodes(bundesliga, "span") 

et maintenant la sortie I obtenir est:

[1] <span id="ctl00_cphMain_UCOffer_LeagueList_rptLeague_ctl00_ucBettingContainer_lblClose" clas ... 
[2] <span itemscope="itemscope" itemprop="location" itemtype="http://schema.org/Place"><meta ite ... 
[3] <span itemprop="name">VfB Stuttgart</span> 
[4] <span>X</span> 

Maintenant, je veux extraire le nom de l'équipe chaque<span itemprop="name"></span> mais je ne sais pas comment l'extraire. J'ai essayé d'utiliser des noeuds ou des attr, mais cela n'a pas fonctionné.

Répondre

1

Vous pouvez rendre le sélecteur XPath plus spécifique, puis utiliser html_text, par ex.

library(rvest) 

interwetten <- 'https://www.interwetten.com/en/sportsbook/top-leagues?topLinkId=1' %>% 
    read_html() 

teams <- interwetten %>% 
    html_nodes(xpath = '//*[@id="TBL_Content_1019"]//span[@itemprop="name"]') %>% 
    html_text() 

teams 
#> [1] "VfB Stuttgart" "1. FC Cologne" "Mainz 05"  
#> [4] "Hamburger SV" "Hertha BSC"  "Schalke 04"  
#> [7] "Hannover 96"  "Frankfurt"  "Hoffenheim"  
#> [10] "Augsburg"  "Bayern Munich" "Freiburg"  
#> [13] "Dortmund"  "RB Leipzig"  "Leverkusen"  
#> [16] "Wolfsburg"  "Werder Bremen" "Monchengladbach" 
+0

merci beaucoup! cela vous dérangerait-il de me dire comment insérer ces noms d'équipes dans une base de données de deux colonnes? Je veux que chaque équipe avec l'index impair non '(1, 3, 5 ..) soit insérée dans la première colonne et chaque équipe indexée dans une position égale sera dans la deuxième colonne? –

+0

Vous pouvez utiliser 'tibble :: as_data_frame (matrix (équipes, ncol = 2, byrow = TRUE))' après le fait. Il est plus robuste de gratter chacun dans un vecteur séparé, mais c'est un peu plus de travail. – alistaire