如何使用doPostBack在R中抓取动态表?

时间:2019-01-17 17:23:43

标签: r rvest

我正在从网站中将表的内容提取到列表或df中,该网站是:https://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=steamer&team=0&lg=all&players=0

整个表的内容看起来需要使用以下导航:

javascript:__doPostBack('ProjectionBoard1$dg1$ctl00$ctl02$ctl00$ctl05
javascript:__doPostBack('ProjectionBoard1$dg1$ctl00$ctl02$ctl00$ctl06

列表继续返回分散在83页中的行。我正在寻找可以为我抓取数据的rvest解决方案。我希望有人可以给我一点逐步的指导,以便我可以从学习其中的“如何”部分中受益。

我发现的另一种rvest解决方案似乎是在模拟“导出为CSV”,类似于本文:Scraping dynamic table in R with POST

我不希望使用rSeleniumphantomJS

先谢谢了。

1 个答案:

答案 0 :(得分:1)

您当然可以使用rvest,但是它将更加复杂。您需要做的是,在点击导出数据按钮的同时,监视开发人员工具中的“网络”标签。这将是一个发布请求,您需要做的是复制带有标题和表单数据的发布请求。

或者您可以使用RSelenium几行来解决它。

library(RSelenium)

rmDr <- rsDriver(port = 4444L)

client <- rmDr$client

url <- "https://www.fangraphs.com/projections.aspx?pos=all&stats=bat&type=steamer600&team=0&lg=all&players=0"

client$navigate(url)

export_buttom <- client$findElement(using = "css",value = "#ProjectionBoard1_cmdCSV")

export_buttom$clickElement()