getForm avec la méthode get - comment contourner la redirection ?
-
21-12-2019 - |
Question
J'ai du mal avec le getForm
et le problème de la redirection de ma requête.J'ai essayé d'expérimenter avec cookiefile
et followlocation
comme dans d'autres sujets dans Stackoverflow mais sans résultat.
Mon code :
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
)
)
Ai-je raison de dire que je reçois le contenu de la page de redirection ?Si oui, comment puis-je le contourner ?
La solution
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)
Avec un peu de persuasion, test2 devrait, espérons-le, contenir les résultats
curl est un handle qui persistera entre les appels.paramètre cookiefile
dit à RCurl de stocker les cookies.Vous pouvez accéder aux informations dans la poignée curl en utilisant getCurlInfo(curl)
.Par exemple
> cat(getCurlInfo(curl)$cookielist)
korpus.pl FALSE / FALSE 0 PHPSESSID ark8hbi13e2c4qrp51aq51nj62
L'appel getForm définit le cookie important PHPSESSID
.Le premier getURL donne :
> library(XML)
> htmlParse(test1)['//h3'][[1]]
<h3>This page will <a href="poliqarp.php">refresh</a> automatically in a second</h3>
Il vous indique qu'il sera probablement actualisé automatiquement avec javascript, vous devez donc effectuer cette actualisation manuellement en émettant un autre appel.