2016-12-28 20 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()