GoalR mostra diversa HTML (se confrontato al browser web) per lo stesso Google Search URL
Vorrei utilizzare R per scaricare il codice HTML di una pagina web di ricerca di Google, come mostrato in un browser web.
Problema
Quando scarico di Google di ricerca HTML pagina web in R, utilizzando esattamente lo stesso URL dal browser web, ho notato che la R scaricato HTML è diverso per il browser web HTML per esempio per un URL di ricerca Google avanzato, il parametro data viene ignorato nell'HTML letto da R mentre nel browser Web viene mantenuto.
Esempio
Faccio una ricerca su Google nel mio browser web per "West End Theatre" e specificare un intervallo di date di 1 gennaio - 31 gennaio 2012. Ho quindi copiare l'URL generato e incollarlo in R .
# Google Search URL from Firefox web browser
url <- "http://www.google.co.uk/search?q=west+end+theatre&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a#q=west+end+theatre&hl=en&client=firefox-a&hs=z7I&rls=org.mozilla:en-GB%3Aofficial&prmd=imvns&sa=X&ei=rJE7T8fwM82WhQe_6eD2CQ&ved=0CGoQpwUoBw&source=lnt&tbs=cdr:1%2Ccd_min%3A1%2F1%2F2012%2Ccd_max%3A31%2F1%2F2012&tbm=&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=6f92152f78004c6d&biw=1600&bih=810"
u <- URLdecode(url)
# Webpage as seen in browser
browseURL(u)
# Webpage as seen from R
HTML <- paste(readLines(u), collapse = "\n")
cat(HTML, file = "output01.html")
shell.exec("output01.html")
# Webpage as seen from R through RCurl
library(RCurl)
cookie = 'cookiefile.txt'
curl = getCurlHandle(cookiefile = cookie,
useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en - US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6",
header = FALSE,
verbose = TRUE,
netrc = TRUE,
maxredirs = as.integer(20),
followlocation = TRUE,
ssl.verifypeer = TRUE,
cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))
HTML2 <- getURL(u, curl = curl)
cat(HTML2, file = "output02.html")
shell.exec("output02.html")
eseguendo il codice di self-contained sopra posso vedere che la prima pagina web che si apre è quello che voglio (con il parametro della data forzata), ma il secondo e terzo pagine web che si aprono (come scaricati tramite R) ha il parametro data ignorato.
Domanda
Come posso scaricare il codice HTML per la prima pagina web che si apre al posto delle seconde pagine web terzo /?
System Information
> sessionInfo()
R version 2.14.0 (2011-10-31)
Platform: x86_64-pc-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RCurl_1.6-10.1 bitops_1.0-4.1
loaded via a namespace (and not attached):
[1] tools_2.14.0
URLDecode è prima di rendere necessaria la richiesta? –
@MattBridges Purtroppo si. Ad esempio, quanto segue produce pagine Web diverse, sulla base del codice sopra, quando inserito in R: browseURL (url); browseURL (u) –
Credo che Google utilizzi AJAX per ricaricare i risultati con le opzioni di filtro attivate. 'readLines' e' getURL' ottengono la pagina prima dei risultati di ogni chiamata AJAX. – jbaums