2016-04-19 14 views
1

Ich versuche, Daten von einer Website und dank einen Helfer zu erhalten i auf das folgende Skript erhalten könnte:identifiziert den korrekten CSS-Selektor von einer URL für einen R-Skript

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") 

jedoch in einigen Fällen, Wie im obigen Beispiel wird die richtige Verknüpfung nicht abgerufen, da html_attr aus irgendeinem Grund keine URLs ("href") innerhalb des von html_node erkannten Knotens findet. Bisher habe ich verschiedene CSS-Selektoren wie "td", "a.onwardnav" und ".plantname" ausprobiert, aber keiner von ihnen erzeugt ein Objekt, das html_attr korrekt verarbeiten kann. Irgendein Hinweis?

Antwort

0

Sie sind wirklich nah dran, die Antwort zu bekommen, die Sie erwartet haben. Wenn Sie möchten, dass die Links aus der gewünschten Seite ziehen, dann:

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

wird eine Liste aller von den Links auf dem „einem“ Tag mit einem „href“ -Attribut zurück. Beachten Sie, dass der Befehl html_nodes und nicht node lautet. Es gibt mehrere "a" -Tags, also den Plural.
Wenn Sie suchen die Informationen aus der Tabelle in dem Körper dann versuchen Sie dies:

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

Die zweite Zeile wird eine Liste der 9 Zeilen aus der Tabelle zurück, die man könnte dann analysieren, um die Reihe zu bekommen Namen ("th") und/oder Zeilenwerte ("td").
Hoffe, das hilft.

+0

Vielen Dank! –