使用R将字段添加到在线表单中,并刮取生成的javascript创建的表

使用R将字段添加到在线表单中,并刮取生成的javascript创建的表,javascript,r,web-scraping,phantomjs,rselenium,Javascript,R,Web Scraping,Phantomjs,Rselenium,我正试图让R使用预定义文本(例如BN1 1NA)完成此网页上的“按邮政编码搜索”字段,前进到下一页并刮取生成的4列表格,根据邮政编码,该表格可以覆盖多个页面。为了使其更加复杂,“改进指标”不是一个文本字段,而是一个图像文件(如使用邮政编码BN1 3HP搜索所示)。我希望此列包含0或1,具体取决于图像是否存在 最终,我想要的是一个漂亮的数据框,它可以反映屏幕上的4列 我试图修改这篇文章中的建议,去做我上面描述的事情,但运气不好,老实说,我试图破译这篇文章是我力所不及的 我意识到R可能不是最适合我需

我正试图让R使用预定义文本(例如BN1 1NA)完成此网页上的“按邮政编码搜索”字段,前进到下一页并刮取生成的4列表格,根据邮政编码,该表格可以覆盖多个页面。为了使其更加复杂,“改进指标”不是一个文本字段,而是一个图像文件(如使用邮政编码BN1 3HP搜索所示)。我希望此列包含0或1,具体取决于图像是否存在

最终,我想要的是一个漂亮的数据框,它可以反映屏幕上的4列

我试图修改这篇文章中的建议,去做我上面描述的事情,但运气不好,老实说,我试图破译这篇文章是我力所不及的


我意识到R可能不是最适合我需要做的事情,但它是我所拥有的一切。任何帮助都将不胜感激

我不确定美国之音网站的T&C对刮削有何评论,但这段代码可以完成这项工作:

library("httr")
library("rvest")
post_code <- "B1 1"
resp <- POST("http://cti.voa.gov.uk/cti/InitS.asp?lcn=0",
             encode = "form",
             body = list(btnPush = 1,
                         txtPageNum = 0,
                         txtPostCode = post_code,
                         txtRedirectTo = "InitS.asp",
                         txtStartKey = 0))
resp_cont <- read_html(resp)
council_table <- resp_cont %>%
  html_node(".scl_complex table") %>%
  html_table
库(“httr”)
图书馆(“rvest”)

邮政编码我使用RSelenium删除埃克塞特邮政编码的议会税单:

library(RSelenium)
library(RCurl)
input = 'EX4 2NU'
appURL <- "http://cti.voa.gov.uk/cti/"
RSelenium::startServer()
remDr <- remoteDriver()
remDr$open()
Sys.sleep(5)
remDr$navigate(appURL)
search.form <- remDr$findElement(using = "xpath", "//*[@id='txtPostCode']")
search.form$sendKeysToElement(list(input, key = "enter"))
doc <- remDr$getPageSource()
tbl = xpathSApply(htmlParse(doc[[1]]),'//tbody')
temp1 = readHTMLTable(tbl[[1]],header=F)

v = length(xpathSApply(htmlParse(doc[[1]]),'//a[@class="next"]'))
while (v != 0) {
    nextpage <- remDr$findElement(using = "xpath", "//*[@class = 'next']")
    nextpage$clickElement()
    doc <- remDr$getPageSource()
    tbl = xpathSApply(htmlParse(doc[[1]]),'//tbody')
    temp2 = readHTMLTable(tbl[[1]],header=F)
    temp1 = rbind(temp1,temp2)
    v = length(xpathSApply(htmlParse(doc[[1]]),'//a[@class="next"]'))
}
finaltable = temp1
库(RSelenium)
图书馆(RCurl)
输入='EX4 2NU'

appURL我尝试过使用
lookThank,这对结果的第一页非常有用。有没有办法让它浏览所有的页面,然后做同样的事情?例如,B1 1返回141页的结果。