J'essaye actuellement de gratter les données de biodiversité d'un site Web spécifique (http://www.faunaeur.org/?no_redirect=1). J'ai réussi à obtenir des résultats, mais pas aussi automatisée que je l'espérais ... La première partie est fait, ce qui est la navigation sur le site:Rselenium - Comment faire pour gratter les données d'une page Web avec aucun ID ou des noms d'aucune sorte
Mise en place 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()
Puis commencer ma la navigation (ce serait un exemple pour les îles Baléares):
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()
de ce point, je peux télécharger le fichier xls des 20 sous-espèces en utilisant:
mybrowser1$findElement(using = "xpath", "//a[@href='JavaScript:document.export_species_list.submit()']")$clickElement()
Mais ce n'est pas ce que je veux, je ne veux pas utiliser un "clic". Est-il possible de télécharger le fichier à partir de ce lien JavaScript directement dans mon environnement R ou de rayer le tableau des 20 sous-espèces directement à partir du code source de la page Web en utilisant Rselenium? J'ai essayé ces deux solutions mais c'est une impasse ... Le plus gros problème est que la page est une page temporaire ou 'page de résultats' et il semble que je ne trouve pas de @value, @id, @name ou @class correspondant à la table dont j'ai besoin.
Un indice sur une solution qui impliquait une manière automatisée de le faire via R? J'en ai besoin sous cette forme car le script doit être exécuté ensuite par des personnes qui ont besoin de créer eux-mêmes les résultats. Merci d'avance !
Oui, vous devez définir options firefox appropriées voir http://stackoverflow.com/questions/36574012/rselenium-setting-makefirefoxprofile-for-mac-os-x-to-download-files-without-ask. Le fichier xls sera alors téléchargé dans le répertoire que vous nommez – jdharrison
J'ai effectivement vérifié cela déjà. Je me demandais juste s'il y avait une autre solution efficace ... Puisque vous êtes le développeur de Rselenium, jdharrison, je ne pense pas que j'obtiendrai de meilleures réponses! Merci –