Webscrape与Rselenium和Rvest从下拉框中ID变化

时间:2016-12-28 20:54:03

标签: r web-scraping rvest rselenium

我希望从网站号码火上搜集一些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

1 个答案:

答案 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()