getForm with get方法 - 如何绕过重定向?

时间:2014-04-12 21:04:50

标签: r url-redirection rcurl geturl

我正在努力解决getForm以及重定向查询的问题。我试图尝试使用cookiefilefollowlocation,就像Stackoverflow中的其他主题一样,但没有结果。

我的代码:

  getForm("http://korpus.pl/poliqarp/poliqarp.php",
          query = "pies", corpus = "2", showMatch = "1",showContext = "3",
          leftContext = "5", rightContext = "5", wideContext = "50", hitsPerPage = "10",              
          .opts = curlOptions(
            verbose = TRUE,
            followlocation=TRUE
            )
      )

我是否正确,我正在获取重定向页面的内容?如果是这样,我怎么能绕过它呢?

1 个答案:

答案 0 :(得分:0)

curl = getCurlHandle(cookiefile = "", verbose = TRUE, followlocation=TRUE)

getForm("http://korpus.pl/poliqarp/poliqarp.php",
        query = "pies", corpus = "2", showMatch = "1",showContext = "3",
        leftContext = "5", rightContext = "5", wideContext = "50", hitsPerPage = "10",              
        .opts = curlOptions(
          verbose = TRUE,
          followlocation=TRUE
        )
        , curl = curl)


test1 <- getURL("http://korpus.pl/poliqarp/poliqarp.php", curl = curl)
test2 <- getURL("http://korpus.pl/poliqarp/poliqarp.php", curl = curl)

通过一些说服测试2希望应该包含结果

curl是一个会在调用过程中持续存在的句柄。设置cookiefile告诉RCurl存储cookie。 您可以使用getCurlInfo(curl)访问curl句柄中的信息。例如

> cat(getCurlInfo(curl)$cookielist)
korpus.pl   FALSE   /   FALSE   0   PHPSESSID   ark8hbi13e2c4qrp51aq51nj62

getForm调用设置重要的cookie PHPSESSID。第一个getURL导致:

> library(XML)
> htmlParse(test1)['//h3'][[1]]
<h3>This page will <a href="poliqarp.php">refresh</a> automatically in a second</h3> 

它告诉你它可能会使用javascript自动刷新,所以你需要通过发出另一个电话来手动刷新。