微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R selenium选择所有带有css的元素,如_1、_2

如何解决R selenium选择所有带有css的元素,如_1、_2

我想从这个 website 下载所有电子邮件。 我发现要做到这一点,我应该在“部门列表”中选择每个名称,然后单击以打开隐藏的名称。如何选择完整的电子邮件列表?例如,要在“解剖学”上进行,我正在尝试以下操作。

此外,有没有更好的方法来先选择所有部门的 css 选择器,然后循环它们以获取电子邮件? 提前致谢

library(RSelenium)

dep<-"http://peoplefinder.tcd.ie/#DEPTSEARCHRESULT" #my url

#open connection
rD <- rsDriver(browser="firefox",port=4545L,verbose=F)
remDr <- rD[["client"]]
remDr$navigate(dep)
#find and click on "Anatomy"
  webElem <- remDr$findElement(using = 'css selector','#MainContent_UserControlSearchForPerson_DropDownListDepartments > option:nth-child(9)')  
  webElem$clickElement()
#open masked list
  webElem <- remDr$findElement(using = 'css selector','#DEPTSEARCHRESULT > div.panel-heading > div.panel-title.visible-md.visible-lg > h4 > a')  # this matches for the element which is interactable
  webElem$clickElement()
  #Now I cannot get the right css if I substite _# with _1 for example I get the first element but I would like the full list
  text<-remDr$findElement(using = 'css selector','MainContent_UserControlSearchForPerson_RepeaterSubDeptParent_RepeaterSubDeptChild_0_UserControlEmailAddress_#_EmailLink_#')$getElementText()

解决方法

我是这样解决的;您认为是否有更好/更快的代码?

dep<-"http://peoplefinder.tcd.ie/#DEPTSEARCHRESULT"


rD <- rsDriver(browser="firefox",port=4545L,verbose=F)
remDr <- rD[["client"]]
#MainContent_UserControlSearchForPerson_DropDownListDepartments > option:nth-child(8)-(225)
toclick<-paste0('#MainContent_UserControlSearchForPerson_DropDownListDepartments > option:nth-child(',8:225,')')
mail<-list()
for(i in 1:length(toclick)){
remDr$navigate(dep)

webElem <- remDr$findElement(using = 'css selector',toclick[i])  # click on items in dropdown menu
webElem$clickElement()
Sys.sleep(3) #time to load the page


r<-webElem$getPageSource() #get all webpage text and selct mailto
r<-unlist(str_split(as.character(r),'"'))
w<-which(grepl("mailto:",r))
a<-r[w]
a<-gsub("mailto:","",a,fixed = T)
a<-gsub("%40","@",fixed = T)
a<-unique(a)

mail<-c(mail,a)

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。