Webscrape с Rselenium и Rvest из раскрывающегося списка, где изменяется идентификатор

Я хочу поскрести дату НБА с веб-сайта numberfire по адресу: https://www.numberfire.com/nba/daily-fantasy/daily-basketball-projection

Я пытаюсь перейти в раскрывающийся список и переключить отображаемые данные с Fanduel на Draftkings. Первая возникшая проблема заключается в том, что веб-страница не изменяется при изменении раскрывающегося меню. Я установил и успешно использую селен, чтобы противостоять этому. Однако следующая проблема заключалась в том, что идентификатор этого раскрывающегося меню (и идентификатор всех раскрывающихся меню) на этом сайте изменяется при каждом обновлении. Это вызывает ошибку в R, поскольку он говорит, что есть «NoSuchElement», поскольку он не может заблокировать правильное окно меню, когда он переходит на страницу.

Есть ли способ исправить это с помощью RSelenium to или другого пакета?

Вот мой код на 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

person CooperBuckeye05    schedule 28.12.2016    source источник


Ответы (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()
person CooperBuckeye05    schedule 28.12.2016