Sie können das RSelenium
-Paket verwenden, um Webformulare auszufüllen und zu senden und die Ergebnisse abzurufen.
Der folgende Code RSelenium Nutzung werden die Daten für ein Beispiel Eingabe herunterladen (männlich, unter 18 Jahren, Longbow, Bristol V, 500):
library(RSelenium)
# Start Selenium Server --------------------------------------------------------
checkForServer()
startServer()
remDrv <- remoteDriver()
remDrv$open()
# Simulate browser session and fill out form -----------------------------------
remDrv$navigate('http://www.archersmate.co.uk/')
remDrv$findElement(using = "xpath", "//input[@value = 'Male']")$clickElement()
Sys.sleep(2)
remDrv$findElement(using = "xpath", "//select[@id = 'drpAge']/option[@value = 'Under 18']")$clickElement()
remDrv$findElement(using = "xpath", "//input[@value ='Longbow']")$clickElement()
remDrv$findElement(using = "xpath", "//select[@id = 'rnd']/option[@value = 'Bristol V']")$clickElement()
remDrv$findElement(using = "xpath", "//input[@id ='scr']")$sendKeysToElement(list('5', '0', '0'))
remDrv$findElement(using = "xpath", "//input[@id = 'cmdCalc']")$clickElement()
# Retrieve and download results injecting javascript ---------------------------
Sys.sleep(2)
clsf <- remDrv$executeScript(script = 'return $("#txtClass").val();', args = list())[[1]]
hndcp <- remDrv$executeScript(script = 'return $("#txtHandicap").val();', args = list())[[1]]
remDrv$quit()
remDrv$closeServer()
Der Standard-Browser für RSelenium
ist Firefox. RSelenium
unterstützt jedoch sogar Headless Browsing mit PhantomJS
. Für PhanomJS
Nutzung müssen Sie nur
- download PhantomJS und legen Sie sie in den Benutzer-Pfad
- die Code-Schnipsel zu Beginn ersetzen und am Ende wie beschrieben nächste
Standard-Browsing (wie oben gezeigt):
checkForServer()
startServer()
remDrv <- remoteDriver()
...
remDrv$quit()
remDrv$closeServer()
Headless-Browsing:
pJS <- phantom()
remDrv <- remoteDriver(browserName = 'phantomjs')
...
remDrv$close()
pJS$stop()
http://stackoverflow.com/search?q=[r]+webscrapping –
@ AriB.Friedman das ist wirklich nicht genug .. :) diese Frage beinhaltet Verständnis der [hcalc.js] (http: // www .archersmate.co.uk/scripts/ajax_hcalc.js) Javascript, das durch die Funktionen 'ajaxCalc()' und 'ajaxiCalc()' analysiert, um die 'url' Zeichenkette zu erstellen, die im Aufruf'/functions/iclass.php' verwendet wird. Ich sehe kein Beispiel für all das mit R auf S.O. –
@AnthonyDamico Ich vermutete, dass es nicht sein würde. Aber es gibt ihr einen Ausgangspunkt und ein Vokabular und damit eine Hoffnung, ihre Frage zu verengen.Sie haben edel und geschickt viel Arbeit gemacht, um die Frage einzuschränken, also könnten Sie vielleicht die Frage bearbeiten, um zielgerichteter zu sein? –