您可以使用RSelenium 包填写和提交网络表单并检索结果。
利用RSelenium 的以下代码将下载示例输入的数据(男性、18 岁以下、长弓、布里斯托尔 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()
RSelenium 的默认浏览器是 Firefox。然而,RSelenium 甚至支持使用PhantomJS 进行无头浏览。要利用PhanomJS,您只需要
默认浏览(如上图):
checkForServer()
startServer()
remDrv <- remoteDriver()
...
remDrv$quit()
remDrv$closeServer()
无头浏览:
pJS <- phantom()
remDrv <- remoteDriver(browserName = 'phantomjs')
...
remDrv$close()
pJS$stop()