2016-04-19 1 views
1

Je suis en train d'obtenir des données à partir d'un site Web et grâce à une aide que je pourrais obtenir le script suivant: dans certains casidentifie le sélecteur CSS correct d'une URL pour un script R

require(httr) 
require(rvest) 
     res <- httr::POST(url = "http://apps.kew.org/wcsp/advsearch.do", 
        body = list(page = "advancedSearch", 
           AttachmentExist = "", 
           family = "", 
           placeOfPub = "", 
           genus =  "Arctodupontia", 
           yearPublished = "", 
           species ="scleroclada", 
           author = "", 
           infraRank = "", 
           infraEpithet = "", 
           selectedLevel = "cont"), 
        encode = "form") 
    pg <- content(res, as="parsed") 
    lnks <- html_attr(html_node(pg,"td"), "href") 

Cependant,, Comme dans l'exemple ci-dessus, il ne récupère pas le bon lien car, pour une raison quelconque, html_attr ne trouve pas d'URL ("href") dans le nœud détecté par html_node. Jusqu'à présent, j'ai essayé différents sélecteurs CSS, comme "td", "a.onwardnav" et ".plantname" mais aucun d'eux ne génère un objet que html_attr peut gérer correctement. Un conseil?

Répondre

0

Vous êtes vraiment proche d'obtenir la réponse que vous attendiez. Si vous souhaitez tirer les liens hors de la page souhaitée, puis:

lnks <- html_attr(html_nodes(pg,"a"), "href") 

retourne une liste de tous les liens à l'étiquette « a » avec un attribut « href ». Notez que la commande est html_nodes et non node. Il y a plusieurs "a" tags donc le pluriel.
Si vous recherchez les informations de la table dans le corps puis essayez ceci:

html_table(pg, fill=TRUE) 
#or this 
html_nodes(pg,"tr") 

La deuxième ligne renvoie une liste des 9 lignes de la table que l'on pourrait ensuite analyser pour obtenir la ligne noms ("th") et/ou valeurs de lignes ("td").
Espérons que cela aide.

+0

Merci beaucoup! –