Rselenium-Как очистить данные с веб-страницы без идентификаторов или имен любого рода


В настоящее время я пытаюсь соскрести данные о биоразнообразии с конкретного веб-сайта (http://www.faunaeur.org/?no_redirect=1 мне удалось получить некоторые результаты, но не такие автоматизированные, как я надеялся...Сделана первая Часть , которая просматривает веб-сайт:

Настройка Rselenium:

library(RSelenium)
download.file("https://github.com/mozilla/geckodriver/releases/download/v0.11.1/geckodriver-v0.11.1-win64.zip",destfile="./gecko.zip")
unzip("./gecko.zip",exdir=".",overwrite=T)
checkForServer(update=T)
selfserv = startServer()
mybrowser1 = remoteDriver(browserName="firefox",extraCapabilities = list(marionette = TRUE))
mybrowser1$open()

Затем начинаю просмотр (это было бы примером для Балеарских островов):

mybrowser1$navigate("http://www.faunaeur.org/distribution.php?current_form=species_list")
mybrowser1$findElement(using="xpath","//select[@name='taxon_rank']/option[@value='7']")$clickElement()    # Class
mybrowser1$findElement(using="xpath","//input[@name='taxon_name']")$sendKeysToElement(list('Oligochaeta'))  # Oligochète
mybrowser1$findElement(using="xpath","//select[@name='region']/option[@value='15']")$clickElement()
mybrowser1$findElement(using="xpath","//input[@name='include_doubtful_presence']")$clickElement()
mybrowser1$findElement(using="xpath","//input[@name='submit2']")$clickElement()

С этого момента я могу скачать xls-файл 20 подвидов по использование:

mybrowser1$findElement(using = "xpath", "//a[@href='JavaScript:document.export_species_list.submit()']")$clickElement()
Но это не то, что я хочу, я не хочу использовать "щелчок". Можно ли загрузить файл из этой ссылки JavaScript непосредственно в моей среде R или очистить таблицу 20 подвидов непосредственно из исходного кода веб-страницы с помощью Rselenium ?

Я пробовал эти два решения, но это тупик...Самая большая проблема заключается в том, что страница является временной страницей или "страницей результатов", и кажется, что я не могу найти в ней никакого @value, @id, @name или @ class соответствует таблице, которая мне нужна.

Есть ли ключ к решению, которое подразумевает автоматизированный способ его выполнения через R ? Мне это нужно в такой форме, потому что сценарий должен быть запущен впоследствии людьми, которым нужно создать сами результаты. Заранее спасибо !

1 2

1 ответ:

Если вы просто хотите таблицу, которая отображается на веб-сайте, это можно сделать без Rselenium через httr следующим образом:

require(rvest)
require(httr)
res <- POST("http://www.faunaeur.org/species_list.php",
            encode = "form", 
            body = list(selected_regions="15",
                        show_what="species list",
                        referring_page="distribution",
                        taxon_rank="7",
                        taxon_name="Oligochaeta",
                        region="15",
                        include_doubtful_presence="yes",
                        submit2="Display Species",
                        show_what="species list",
                        species_or_higher_taxa="species"))
doc <- res %>% read_html
dat <- doc %>% html_table(fill=TRUE, ) %>% .[[9]]
colnames(dat) <- dat[1,]
dat <- dat[-1, ]

Что дает вам:

            Family                      Species / subspecies
2  Acanthodrilidae       Microscolex dubius (Fletscher 1887)
3    Enchytraeidae      Enchytraeus buchholzi Vejdovsky 1878
4    Enchytraeidae     Fridericia berninii Dozsa-Farkas 1988
5    Enchytraeidae            Fridericia caprensis Bell 1947
...
21        Naididae           Aulophorus furcatus (Oken 1815)