RSelenium & Web Scraping - PullRequest
       41

RSelenium & Web Scraping

0 голосов
/ 22 ноября 2018

Я пытаюсь очистить данные, но у меня возникают проблемы с их очисткой.Я могу перемещаться по сайту с помощью RSelenium.Вы можете найти мой код ниже.Я хочу очистить имена из каждого раскрывающегося списка, чтобы я мог сохранить их в объекте и запустить цикл.

library(RSelenium)
library(rvest)
library(XML)
library(RCurl)

rd<-rsDriver()
remDr<-rd[["client"]]

url<-"https://kvk.icar.gov.in/facilities_list.aspx"

jsScript <- "var element = arguments[0]; return element.outerHTML;"

webpage<-read_html(url)

remDr$navigate("https://kvk.icar.gov.in/facilities_list.aspx")

remDr$refresh()

#First drop down

stateEle<-remDr$findElement("id", "ContentPlaceHolder1_ddlState")
#webElem <- remDr$findElement("id", "ContentPlaceHolder1_ddlDistrict")
stateHTML <- remDr$executeScript(jsScript, list(stateEle))[[1]]
statedoc <- htmlParse(appHTML)
states<-doc["//option", fun = function(x) xmlGetAttr(x, "name")]
stateEle$clickElement()
stateEle$sendKeysToElement(states[[30]])
stateEle$clickElement()

#Second drop down

distEle<-remDr$findElement("id", "ContentPlaceHolder1_ddlDistrict")
distHTML <- remDr$executeScript(jsScript, list(distEle))[[1]]
distdoc <- htmlParse(appHTML)
districts<-doc["//option", fun = function(x) xmlGetAttr(x, "value")]
distEle$clickElement()
distEle$sendKeysToElement(list(distdoc[[2]]))
distEle$clickElement()

#Third drop down

kvkEle<-remDr$findElement("id", "ContentPlaceHolder1_ddlKvk")
appHTML <- remDr$executeScript(jsScript, list(kvkEle))[[1]]
kvkdoc <- htmlParse(appHTML)
kvk<-doc["//option", fun = function(x) xmlGetAttr(x, "value")]
kvkEle$clickElement()
kvkEle$sendKeysToElement(list(kvk[[2]]))
kvkEle$clickElement()

#submitting the values

submitEle<-remDr$findElement("id", "ContentPlaceHolder1_btnSubmit")
submitEle$clickElement()

Также я хочу очистить результаты в кадре данных.

1 Ответ

0 голосов
/ 29 ноября 2018

Используя ваш код,

stateEle<-remDr$findElement("id", "ContentPlaceHolder1_ddlState")

Здесь, если вы хотите получить все значения для выполнения цикла, используйте:

library(magrittr)
stateEle$getElementText()[[1]] %>% strsplit(., '\\n')

Это предоставит список текстовых элементов, где вы можете дополнительно удалить параметр "--Select--":

stateEle$getElementText()[[1]] %>% strsplit(., '\\n') %>% unlist %>% setdiff(., '--Select--')

Повторите это для всех других списков выбора.

...