J'essaie de gratter les données de a website en utilisant R. J'utilise rvest
pour essayer de reproduire an example scraping the IMDB page for the Lego Movie. L'exemple préconise l'utilisation d'un outil appelé Selector Gadget pour faciliter l'identification du html_node
associé aux données que vous cherchez à extraire.Grattage Web avec R et gadget de sélection
Je suis finalement intéressé par la construction d'une trame de données qui a le schéma/colonnes suivantes: rank
, blog_name
, facebook_fans
, twitter_followers
, alexa_rank
.
Mon code ci-dessous. J'ai pu utiliser Selector Gadget pour identifier correctement la balise html utilisée dans l'exemple Lego. Cependant, en suivant le même processus et la même structure de code que l'exemple de Lego, j'obtiens NAs (...using firstNAs introduced by coercion[1] NA
). Mon code est ci-dessous:
data2_html = read_html("http://blog.feedspot.com/video_game_news/")
data2_html %>%
html_node(".stats") %>%
html_text() %>%
as.numeric()
J'ai aussi expérimenté: html_node("html_node(".stats , .stats span"))
, qui semble fonctionner pour la « fans Facebook » colonne car il rapporte 714 matches, mais retourne seulement 1 numéro est retourné.
714 matches for .//*[@class and contains(concat(' ', normalize-space(@class), ' '), ' stats ')] | .//*[@class and contains(concat(' ', normalize-space(@class), ' '), ' stats ')]/descendant-or-self::*/span: using first{xml_node}
<td>
[1] <span>997,669</span>
Cela semble vraiment cool, mais je suis incapable de reproduire vos résultats. Erreur: 'game_blogs <- h %>% html_node ('table')%>% # select noeud Table d'enceinte html_table()%>% de table tournante # dans data.frame set_names (make.names) erreur:' 'x' et nm' doit être de la même longueur' – user2205916
Ah! Désolé, cela utilise la version de développement de 'purrr :: set_names', qui peut prendre une fonction. Vous pouvez l'installer depuis [Github] (https://github.com/tidyverse/purrr/), ou simplement utiliser 'set_names (make.names (noms (.)))' Qui feront la même chose. – alistaire