Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从非HTML格式的URL位置自动下载内容。使用软件导航,按下按钮并下载内容_Javascript_Html_Database_R - Fatal编程技术网

Javascript 从非HTML格式的URL位置自动下载内容。使用软件导航,按下按钮并下载内容

Javascript 从非HTML格式的URL位置自动下载内容。使用软件导航,按下按钮并下载内容,javascript,html,database,r,Javascript,Html,Database,R,一段时间以来,我一直在使用R和包RCurl自动从网页下载信息;我通常使用简单的函数,如getURL(),getForm()和postForm()。我通常只是找到HTML参数的可选值并填充它们。然而,我遇到了一个网页,我认为无法使用传统功能下载,因为我无法在url地址中找到任何参数。我相信这是因为网页是用javascript编写的,我不知道如何处理它。我是一名数学家,在使用R方面有着丰富的经验,但对HTML有着非常基础的知识,对javascript一无所知 我不一定需要直接使用R,我可以使用其他软

一段时间以来,我一直在使用R和包RCurl自动从网页下载信息;我通常使用简单的函数,如getURL()getForm()postForm()。我通常只是找到HTML参数的可选值并填充它们。然而,我遇到了一个网页,我认为无法使用传统功能下载,因为我无法在url地址中找到任何参数。我相信这是因为网页是用javascript编写的,我不知道如何处理它。我是一名数学家,在使用R方面有着丰富的经验,但对HTML有着非常基础的知识,对javascript一无所知

我不一定需要直接使用R,我可以使用其他软件,然后从R导入它。我发现了一个名为mozrepl的Mozilla应用程序,但我无法让它工作。如果有经验丰富的人能帮助我解决问题,无论是使用不同的软件还是在Rmozrepl中输入适当的命令,我都将不胜感激。如果无法将信息直接下载到R变量,则可以将其保存到文本文件中

我想下载的信息是在以下url中选择日期值,然后点击名为“Consultar TIIE”的按钮后生成的。表格由变量“Posturas”、“Montos”和“Participantes”生成


我这样做是因为我的最终目标是将信息放在一个数据框中。

这看起来确实像是一个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)
应用日期