RSelenium: цикл по всем значениям в выпадающих списках

Я пытаюсь найти для каждой страны свою таблицу со всеми НПО, занимающимися вопросами ВИЧ/СПИДа, используя эту ссылку: https://www.unodc.org/ngo/showExtendedSearch.do

Я могу перейти к URL-адресу и выбрать переключатель «ВИЧ/СПИД». Но теперь мне также нужно извлечь как для «региона», так и для «страны» выпадающих ящиков все значения, чтобы я мог использовать их внутри цикла для последовательного веб-скрейпинга таблицы для каждой страны. Как я могу собрать значения для обоих выпадающих ящиков? Мой код пока ниже:

#load library
library(RSelenium)

#Specify remote driver
remDr <- remoteDriver(browserName='firefox')

#Initialise session 
remDr$open()

#navigate to advanced search page

url <- "https://www.unodc.org/ngo/showExtendedSearch.do"
remDr$navigate(url)

#Click 'HIV/AIDS' filter
webElem <- remDr$findElement(using = 'css', 
                         value = '#applicationArea > form > table > tbody > tr > td > table:nth-child(7) > tbody > tr:nth-child(2) > td > table > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(3) > td:nth-child(4) > input[type="checkbox"]')

webElem$clickElement()

person user3387899    schedule 24.03.2016    source источник


Ответы (1)


Используйте firebug или инструменты разработчика, чтобы определить xpath элементов раскрывающегося меню, затем используйте getElementText для получения значений:

 region_element <- remDr$findElement('xpath', '//*[@id="applicationArea"]/form/table/tbody/tr/td/table[2]/tbody/tr[2]/td/table/tbody/tr[1]/td[2]/select')
regions <- strsplit(region_element$getElementText()[[1]], "\n")

country_element <- remDr$findElement('xpath', '//*[@id="applicationArea"]/form/table/tbody/tr/td/table[2]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]/select')
countries <- strsplit(country_element$getElementText()[[1]], "\n")

R> print(regions[[1]])
 [1] "Middle East and Northern Africa"   "Eastern Africa"                   
 [3] "Western Africa"                    "Central and Southern Africa"      
 [5] "Northern America"                  "Central America and the Caribbean"
 [7] "Latin America"                     "Central and Western Asia"         
 [9] "Southern and Eastern Asia"         "Europe"                           
[11] "Oceania"                          
R> print(head(countries[[1]]))
[1] "Afghanistan"    "Albania"        "Algeria"        "American Samoa" "Andorra"       
[6] "Angola"  
person Stedy    schedule 25.07.2016