Ich bleibe bei Cookies stecken, wenn ich versuche, ein PDF herunterzuladen.Verwenden von R zum Akzeptieren von Cookies zum Herunterladen einer PDF-Datei
Zum Beispiel, wenn ich ein DOI für ein PDF-Dokument auf der Archäologie Data Service habe, wird es zu this landing page mit einem embedded link in it to this pdf lösen, aber die wirklich Umleitungen an this anderen Link.
library(httr)
wird die Auflösung des DOI behandeln und wir können die PDF-URL aus der Zielseite mit library(XML)
extrahieren, aber ich bin bei der Beschaffung der PDF selbst fest.
Wenn ich dies tun:
download.file("http://archaeologydataservice.ac.uk/archiveDS/archiveDownload?t=arch-1352-1/dissemination/pdf/Dyfed/GL44004.pdf", destfile = "tmp.pdf")
dann ich eine HTML-Datei erhalten, die die gleiche wie http://archaeologydataservice.ac.uk/myads/ ist
Der Versuch, die Antwort auf How to use R to download a zipped file from a SSL page that requires cookies führt mich dazu:
library(httr)
terms <- "http://archaeologydataservice.ac.uk/myads/copyrights"
download <- "http://archaeologydataservice.ac.uk/archiveDS/archiveDownload"
values <- list(agree = "yes", t = "arch-1352-1/dissemination/pdf/Dyfed/GL44004.pdf")
# Accept the terms on the form,
# generating the appropriate cookies
POST(terms, body = values)
GET(download, query = values)
# Actually download the file (this will take a while)
resp <- GET(download, query = values)
# write the content of the download to a binary file
writeBin(content(resp, "raw"), "c:/temp/thefile.zip")
Aber nach den POST
und GET
Funktionen bekomme ich einfach den HTML-Code der gleichen Cookie-Seite, die ich mitbekommen habe:
> GET(download, query = values)
Response [http://archaeologydataservice.ac.uk/myads/copyrights?from=2f6172636869766544532f61726368697665446f776e6c6f61643f61677265653d79657326743d617263682d313335322d3125324664697373656d696e6174696f6e2532467064662532464479666564253246474c34343030342e706466]
Date: 2016-01-06 00:35
Status: 200
Content-Type: text/html;charset=UTF-8
Size: 21 kB
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h...
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; c...
<title>Archaeology Data Service: myADS</title>
<link href="http://archaeologydataservice.ac.uk/css/u...
...
bei http://archaeologydataservice.ac.uk/about/Cookies Blick scheint es, dass die Cookie-Situation an dieser Stelle ist kompliziert. Scheint, dass diese Art von Cookie-Komplexität für britische Datenanbieter nicht ungewöhnlich ist: automating the login to the uk data service website in R with RCurl or httr
Wie kann ich mit R die Cookies auf dieser Website umgehen?
Probieren Sie Ubuntu 14.04, R 3.2.3 und Firefox aus. 'dr $ open()' meldet '[1]" Mit remoten Server verbinden " Nicht definierter Fehler in RCurl call.Error in queryRD (paste0 (serverURL,"/Sitzung ")," POST ", qdata = toJSON (serverOpts)): ' –
Dies war immer meine größte Nit, um mit Selen im Allgemeinen zu picken (nicht unbedingt das R pkg). Konsistenz zwischen Windows, OS X & * nix ist so schwierig.Hoffentlich können die Leute dazu beitragen (all meine * nix-Systeme sind sehr dünn konfigurierte kopflose Server-y-Dinge und ich darf nicht versuchen, den phantomjs-Treiber heute Abend zu meistern :-) – hrbrmstr
OK, gefunden, wie man es an meiner Arbeit macht Computer. Ich musste den Selenal Standalone Server zuerst manuell mit 'java -jar selen-server-standalone-2.48.0.jar' starten. Dann kann ich mich verbinden. –