2016-12-28 22 views
1

我期待刮从网站numberfire一些NBA日期:https://www.numberfire.com/nba/daily-fantasy/daily-basketball-projectionsWebscrape W/Rselenium和Rvest下拉框中其中id改变

我试图进入一个下拉框和切换显示的数据费德尔到拉斯金斯。遇到的第一个问题是,网页不会随着对该下拉菜单的更改而改变。我安装并正在成功运行硒以应对此问题。然而接下来的问题是,这个网站上的这个下拉菜单的id(以及所有下拉菜单的id)随着每次刷新而改变。这在R中导致错误,因为它有“NoSuchElement”,因为它在进入页面时无法锁定到正确的菜单框。

有没有办法用RSelenium或其他软件包来解决这个问题?

这里是我的R中的代码:做了很多非静态标识的搜索后

require(RSelenium) 
remDr <- remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445, browserName = "chrome") 

remDr$open() 
remDr$navigate("https://www.numberfire.com/nba/daily-fantasy/daily-basketball-projections") 

iframe <- remDr$findElement(using='id', value="select2-dy8e-container") 
remDr$switchToFrame(iframe) 


option <- remDr$findElement(using = 'xpath', "//*/option[@value = 'DraftKings']") 
option$clickElement() 
option 

回答

1

更新我想出了这个和它的工作:

remDr <- remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445, browserName = "chrome") 
remDr$open() 
remDr$navigate("https://www.numberfire.com/nba/daily-fantasy/daily-basketball-projections") 
webElem <- remDr$findElement('xpath', '//*[(@class = "dropdown-custom dfs-option select2-hidden-accessible")]/option[@value = "4"]') 
webElem$clickElement()