2017-01-05 20 views
2

В настоящее время я пытаюсь очистить данные о биоразнообразии с определенного сайта (http://www.faunaeur.org/?no_redirect=1). Мне удалось получить некоторые результаты, но не так автоматизирована, как я надеялся ... The Первая часть делается, который просматривает через веб-сайт:Rselenium - Как очистить данные с веб-страницы без каких-либо идентификаторов или имен любого типа

Настройка 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? Мне нужно это в этой форме, потому что скрипт должен запускаться впоследствии людьми, которые должны сами создавать результаты. Заранее спасибо !

+0

Да вам нужно будет установить соответствующие параметры firefox см. http://stackoverflow.com/questions/36574012/rselenium-setting-makefirefoxprofile-for-mac-os-x-to-download-files-without-ask. Затем файл xls будет загружен в каталог, который вы назвали – jdharrison

+0

. Я действительно уже проверил это. Было просто интересно, было ли еще какое-то эффективное решение ... Поскольку вы разработчик Rselenium, jdharrison, я не думаю, что получу лучшие ответы! Спасибо –

ответ

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) 
+0

Это замечательно! Моя ошибка состояла в том, чтобы сосредоточиться на пакете Rselenium, я не понимал, что это можно сделать через rvest & httr ... Спасибо FlooO! –