Javascript 从非HTML格式的URL位置自动下载内容。使用软件导航,按下按钮并下载内容
一段时间以来,我一直在使用R和包RCurl自动从网页下载信息;我通常使用简单的函数,如getURL(),getForm()和postForm()。我通常只是找到HTML参数的可选值并填充它们。然而,我遇到了一个网页,我认为无法使用传统功能下载,因为我无法在url地址中找到任何参数。我相信这是因为网页是用javascript编写的,我不知道如何处理它。我是一名数学家,在使用R方面有着丰富的经验,但对HTML有着非常基础的知识,对javascript一无所知 我不一定需要直接使用R,我可以使用其他软件,然后从R导入它。我发现了一个名为mozrepl的Mozilla应用程序,但我无法让它工作。如果有经验丰富的人能帮助我解决问题,无论是使用不同的软件还是在R或mozrepl中输入适当的命令,我都将不胜感激。如果无法将信息直接下载到R变量,则可以将其保存到文本文件中 我想下载的信息是在以下url中选择日期值,然后点击名为“Consultar TIIE”的按钮后生成的。表格由变量“Posturas”、“Montos”和“Participantes”生成Javascript 从非HTML格式的URL位置自动下载内容。使用软件导航,按下按钮并下载内容,javascript,html,database,r,Javascript,Html,Database,R,一段时间以来,我一直在使用R和包RCurl自动从网页下载信息;我通常使用简单的函数,如getURL(),getForm()和postForm()。我通常只是找到HTML参数的可选值并填充它们。然而,我遇到了一个网页,我认为无法使用传统功能下载,因为我无法在url地址中找到任何参数。我相信这是因为网页是用javascript编写的,我不知道如何处理它。我是一名数学家,在使用R方面有着丰富的经验,但对HTML有着非常基础的知识,对javascript一无所知 我不一定需要直接使用R,我可以使用其他软
我这样做是因为我的最终目标是将信息放在一个数据框中。这看起来确实像是一个javascript问题,而不是与R中的web抓取直接相关的问题 对于这个问题有多种方法,您可以在
您所指的示例似乎运行一个自定义脚本,
show_calendar2
,该脚本在这里定义这里没有javascript问题。javascript简单地创建日历,以便您可以选择要提交到表单的日期。然而,还有很多其他问题
在服务器端,他们似乎试图检测到任何浏览器试图提取数据的行为。
此外,一旦表单正确提交,它们会有一个重定向,这会导致问题
require(RCurl)
require(XML)
appDate <- "20130502"
rURL <- "http://www.banxico.org.mx/tiieban/leeArgumentos.faces?BMXC_plazo=28&BMXC_semanas=4"
usera <- "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:21.0) Gecko/20100101 Firefox/21.0"
curl <- getCurlHandle(cookiefile = "", verbose = TRUE, useragent = usera
, followlocation = TRUE, autoreferer = TRUE, postredir = 2
, httpheader = c(Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding" = "gzip, deflate"
, "Accept-Language" = "en-US,en;q=0.5"
, Connection = "keep-alive"), referer = "http://www.banxico.org.mx/tiieban/leeArgumentos.faces")
txt <- getURLContent(rURL, curl = curl, verbose = TRUE)
fParams <- structure(c(appDate, "Consultar+TIIE", "leeArgumentos")
,.Names = c( "leeArgumentos%3Afecha", "leeArgumentos%3Asubmit", "leeArgumentos"))
res <- postForm(rURL, .params = fParams, style = "post", curl = curl, binary = TRUE)
xRes <- htmlParse(rawToChar(res))
readHTMLTable(getNodeSet(xRes, "//*/table")[[3]])
Posturas Montos Participantes
1 4.3100 350 Banco Credit Suisse (México), S.A.
2 4.3245 350 Banco Inbursa S.A.
3 4.3200 350 Banco Invex S.A.
4 4.3375 350 Banco Mercantil del Norte S.A.
5 4.3350 350 Banco Nacional de México S.A.
6 4.3250 350 HSBC México S.A.
7 4.3300 350 ScotiaBank Inverlat, S.A.
require(RCurl)
需要(XML)
应用日期