2016-03-25 7 views
0

Die ITTO-Website produziert eine Tabelle von Holzprodukten und fließt direkt unter dem Suchformular, sobald die Abfrage (auf der gleichen Seite) eingereicht wird. Mit den Informationen aus SelectorGadget von Chrome erwarte ich, dass die Tabelle als CSS-Element "td" angezeigt wird. Mit rvest für das Jahr 2014 Informationen über Albanien zu kratzen ...Wenn scraping mit rvest erwartet html_node nicht erscheinen

library(rvest) 

session <- html_session("http://www.itto.int/annual_review_output/?mode=searchdata") 
form <- html_form(session)[[2]] 
form <- set_values(form, "countries[]" = "8", "products[]" = "1" ,"flows[]" = "1", "years[]" = "2014") 
query <- submit_form(session, form, submit = NULL) 
page <- read_html(query) %>% html_nodes("td") 
page 

die in der Tabelle "td" abwesend Ergebnisse:

{xml_nodeset (0)} 

Prüfungs andere Elemente der Seite mit html_nodes() schlägt vor, dass submit_form() durchgeführt anders als erwartet.

Also meine Frage ist, wo ist die erwartete Tabelle?

Antwort

2

Es könnte einfacher sein (auf lange Sicht) die Auswahlbox Optionen zu kratzen und füttern nur den POST Anruf direkt:

library(httr) 
library(rvest) 

res <- POST(url = "http://www.itto.int/annual_review_output/?mode=searchdata", 
      body = list(`countries[]` = "76", 
         `products[]` = "1", `flows[]` = "1", 
         `years[]` = "2014"), 
      encode = "form") 

pg <- content(res, as="parsed") 
html_nodes(pg, "td") 

## {xml_nodeset (7)} 
## [1] <td>Brazil</td> 
## [2] <td>Ind. roundwood</td> 
## [3] <td>Exports Quantity</td> 
## [4] <td>1000 m3</td> 
## [5] <td>2014</td> 
## [6] <td style="text-align:right;">204.59</td> 
## [7] <td>I</td> 
+0

Dank schätzen die Führung! – Nathan