我希望从网站号码火上搜集一些NBA日期:https://www.numberfire.com/nba/daily-fantasy/daily-basketball-projections
我正在尝试进入下拉框并将显示的数据从Fanduel切换到Draftkings。第一个遇到的问题是网页不会随着下拉菜单的更改而改变。我安装并成功运行selenium来对抗这个问题。然而,下一个问题是该站点上此下拉菜单的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
答案 0 :(得分:1)
在对非静态Id进行大量搜索后更新我想出了这个并且它有效:
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()