2017-02-05 22 views
1

我對R很新,所以請原諒我的完整天真。我正在嘗試使用R和Selen來從Fangraphs中刮取棒球數據。不幸的是,我想使用的圖表是javascript,圖表的備份數據公開不可用(或者我無法使用inspect找到它)。我正在嘗試使用Selenium來抓取這些數據,但我並不熟悉代碼。R和RSelenium來拖動javascript表

我想從這個圖表中拉出數據,並使用循環迭代地拖動不同的日期。

http://www.fangraphs.com/leaderssplits.aspx?splitArr=&strgroup=season&statgroup=2&startDate=2016-3-1&endDate=2016-11-1&filter=&position=B&statType=player&autoPt=true&sort=16,1&pg=0

讓我知道如果有什麼我可以提供更多的信息。我衷心感謝任何和所有幫助。謝謝閱讀!

回答

1

雖然我討厭在運動用球的努力來幫助,就沒有必要對硒時一個非常好的JSON XHR響應可用:

library(httr) 
library(jsonlite) 
library(tidyverse) 

options(width=120) 

res <- POST("http://www.fangraphs.com/splitstool.aspx/getsplitleaders", 
      content_type_json(), 
      body = '{"strPlayerId": "all", "strSplitArr": "[]", "strGroup": "season", "strPosition": "B", "strType": "2", "strStartDate": "2016-3-1", "strEndDate": "2016-11-1", "strSplitTeams": "false", "dctFilters": [], "strStatType": "player", "strAutoPt": "true"}') 

ret <- fromJSON(content(res, as="text")) 

df <- setNames(as_data_frame(ret$d$v), ret$d$k) 

glimpse(df) 
## Observations: 362 
## Variables: 17 
## $ Season <chr> "2016", "2016", "2016", "2016", "2016", "2016", "2016", "2016", "2016", "2016", "2016", "2016", "201... 
## $ Name <chr> "<a href=\"http://www.fangraphs.com/statss.aspx?playerid=393\">Victor Martinez</a>", "<a href=\"http... 
## $ Team <chr> "DET", "CLE", "2 Tms", "TEX", "BOS", "ATL", "CHW", "CIN", "MIA", "DET", "LAA", "MIA", "NYY", "NYY", ... 
## $ PA  <chr> "610", "259", "593", "640", "626", "259", "666", "584", "365", "194", "650", "264", "243", "438", "6... 
## $ BB% <chr> "0.081967213", "0.057915057", "0.059021922", "0.075", "0.127795527", "0.023166023", "0.096096096", "... 
## $ K%  <chr> "0.147540983", "0.189189189", "0.170320404", "0.103125", "0.137380191", "0.111969111", "0.244744744"... 
## $ BB/K <chr> "0.555555555", "0.306122448", "0.346534653", "0.727272727", "0.930232558", "0.206896551", "0.3926380... 
## $ AVG <chr> "0.289330922", "0.205882352", "0.295289855", "0.300171526", "0.314711359", "0.218623481", "0.2254237... 
## $ OBP <chr> "0.350819672", "0.258687258", "0.337268128", "0.3578125", "0.400958466", "0.243243243", "0.302255639... 
## $ SLG <chr> "0.475587703", "0.331932773", "0.512681159", "0.521440823", "0.620111731", "0.303643724", "0.4644067... 
## $ OPS <chr> "0.826407375", "0.590620031", "0.849949287", "0.879253323", "1.021070197", "0.546886967", "0.7666624... 
## $ ISO <chr> "0.186256781", "0.126050421", "0.217391304", "0.221269297", "0.305400372", "0.085020243", "0.2389830... 
## $ BABIP <chr> "0.302961275", "0.227027027", "0.31455399", "0.293032786", "0.311904761", "0.237442922", "0.23604060... 
## $ wRC <chr> "88.2665363979459", "17.2829323978341", "89.4981070690418", "103.469989324776", "125.949712448356", ... 
## $ wRAA <chr> "16.4085380268217", "-13.2272669105613", "19.6427086525227", "28.0779910337601", "52.2069141199561",... 
## $ wOBA <chr> "0.350698787013558", "0.256208411251852", "0.358216146661794", "0.371267644106778", "0.4191683159132... 
## $ wRC+ <chr> "119.598350421384", "54.0784826585152", "123.808772024583", "130.393352062375", "162.529328454689", ... 

df 
## # A tibble: 362 × 17 
## Season                    Name Team PA  `BB%` 
##  <chr>                   <chr> <chr> <chr>  <chr> 
## 1 2016 <a href="http://www.fangraphs.com/statss.aspx?playerid=393">Victor Martinez</a> DET 610 0.081967213 
## 2 2016  <a href="http://www.fangraphs.com/statss.aspx?playerid=454">Juan Uribe</a> CLE 259 0.057915057 
## 3 2016 <a href="http://www.fangraphs.com/statss.aspx?playerid=589">Carlos Beltran</a> 2 Tms 593 0.059021922 
## 4 2016 <a href="http://www.fangraphs.com/statss.aspx?playerid=639">Adrian Beltre</a> TEX 640  0.075 
## 5 2016  <a href="http://www.fangraphs.com/statss.aspx?playerid=745">David Ortiz</a> BOS 626 0.127795527 
## 6 2016 <a href="http://www.fangraphs.com/statss.aspx?playerid=746">A.J. Pierzynski</a> ATL 259 0.023166023 
## 7 2016  <a href="http://www.fangraphs.com/statss.aspx?playerid=785">Todd Frazier</a> CHW 666 0.096096096 
## 8 2016 <a href="http://www.fangraphs.com/statss.aspx?playerid=791">Brandon Phillips</a> CIN 584 0.030821917 
## 9 2016 <a href="http://www.fangraphs.com/statss.aspx?playerid=1101">Ichiro Suzuki</a> MIA 365 0.08219178 
## 10 2016 <a href="http://www.fangraphs.com/statss.aspx?playerid=1159">Andrew Romine</a> DET 194 0.067010309 
## # ... with 352 more rows, and 12 more variables: `K%` <chr>, `BB/K` <chr>, AVG <chr>, OBP <chr>, SLG <chr>, OPS <chr>, 
## # ISO <chr>, BABIP <chr>, wRC <chr>, wRAA <chr>, wOBA <chr>, `wRC+` <chr> 
+0

這看起來像它的一切我想要的。謝謝!!真的很感激它。 –

+0

我只是很高興它幫助(也很高興他們使用相對乾淨的XHR呼叫) – hrbrmstr

+0

你知道我可能如何應用循環函數來刮多個日期嗎?我試着創建一個向量的日期和使用向量循環函數我,但無法得到這個工作。 –