使用r通过下拉html表单导航和抓取网页

时间:2016-07-08 01:15:36

标签: r post dataframe web-scraping rvest

我试图从http://www.footballoutsiders.com/stats/snapcounts抓取数据,但我无法更改网站下拉框中的字段("团队",&#34 ;周","位置"和"年")。我试图刮掉与球队相关的桌子="所有",周=" 1",pos ="所有"和年份=" 2015&# 34;与rvest在下面。

url <- "http://www.footballoutsiders.com/stats/snapcounts"
pgsession <- html_session(url)
pgform <-html_form(pgsession)[[3]]
filled_form <-set_values(pgform,
            "team" = "ALL",
            "week" = "1",
            "pos"  = "ALL",
            "year" = "2015"             
 )

 submit_form(session=pgsession,form=filled_form, POST=url)

 y <- read_html("http://www.footballoutsiders.com/stats/snapcounts")

 y <- y %>%
    html_nodes("table") %>%
    .[[2]] %>%
    html_table(header=TRUE)

此代码返回与下拉框中默认变量相关联的表,即team =&#34; ALL&#34;,week =&#34; 20&#34;,pos =&#34; QB&#34; ,和年=&#34; 2015&#34;这是一个只包含11个观测值的数据框。如果它实际上已经改变了字段,它将返回一个包含1,695个观测值的数据帧。

1 个答案:

答案 0 :(得分:3)

您可以捕获表单提交时生成的会话,并将该会话用作html_nodes的输入:

d <- submit_form(session=pgsession, form=filled_form)

y <- d %>%
    html_nodes("table") %>%
    .[[2]] %>%
    html_table(header=TRUE)

dim(y)
#[1] 1695   11

否则,如果您使用read_html(url),则表示您正在阅读原始页面。