getForm с помощью метода get - как обойти перенаправление?
-
21-12-2019 - |
Вопрос
Я борюсь с getForm
и проблема с перенаправлением моего запроса.Я пытался поэкспериментировать с cookiefile
и followlocation
как и в других разделах 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
)
)
Прав ли я в том, что получаю содержимое страницы перенаправления?Если да, то как я могу обойти это?
Решение
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.Вы можете получить доступ к информации в дескрипторе curl, используя getCurlInfo(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, поэтому вам нужно выполнить это обновление вручную, выполнив другой вызов.