Joa*_*ler 8 xml forms r web-scraping rselenium
有没有人从R远程填写网络表格?
我想使用我的分数在R中做一些射箭统计.有一个非常方便的网页,给你分类和障碍http://www.archersmate.co.uk/,我自然希望包括在我的统计表.
是否可以远程填写此表格并将结果返回给R ???
否则我将得到所有差点表并将其自己粘贴到数据库中.
更新:我们已经将问题缩小到这样的事实,即表单提交按钮是用javascript编写的.
您可以使用该RSelenium
包填写并提交Web表单并检索结果.
以下使用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()
Run Code Online (Sandbox Code Playgroud)
RSelenium
Firefox 的默认浏览器是.但是,RSelenium
甚至支持无头浏览使用PhantomJS
.为了利用PhanomJS
你只需要
默认浏览(如上所示):
checkForServer()
startServer()
remDrv <- remoteDriver()
...
remDrv$quit()
remDrv$closeServer()
Run Code Online (Sandbox Code Playgroud)
无头浏览:
pJS <- phantom()
remDrv <- remoteDriver(browserName = 'phantomjs')
...
remDrv$close()
pJS$stop()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7084 次 |
最近记录: |