当使用rvest预期的html_node没有出现时

时间:2016-03-25 00:54:12

标签: html r web-scraping rvest

一旦提交了查询(在同一页面上),ITTO网站就会直接在搜索表单下生成木材产品和流程表。使用我从Chrome的SelectorGadget获得的信息,我希望该表格显示为css元素" td"。利用rvest在2014年刮取阿尔巴尼亚的信息......

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 

这导致表格&#34; td&#34;缺席:

{xml_nodeset (0)}

使用html_nodes()检查页面的其他元素表明submit_form()按预期执行。

所以我的问题是预期的表在哪里?

1 个答案:

答案 0 :(得分:2)

可能更容易(从长远来看)抓取选择框选项并直接提供POST来电:

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>