Utknąłem na ciasteczkach podczas próby pobrania pliku PDF.Używanie R do akceptowania plików cookie w celu pobrania pliku PDF
Na przykład, jeśli mam DOI dla dokumentu PDF na Archeologii Data Service, to rozwiąże się this landing page z embedded link in it to this pdf ale które naprawdę przekierowuje do this inny link.
zajmie się rozwiązaniem problemu z DOI, a my wyodrębnimy URL ze strony docelowej za pomocą library(XML)
, ale utknąłem na samym pliku PDF.
Gdybym to zrobić:
download.file("http://archaeologydataservice.ac.uk/archiveDS/archiveDownload?t=arch-1352-1/dissemination/pdf/Dyfed/GL44004.pdf", destfile = "tmp.pdf")
potem odebrać plik HTML, który jest taki sam jak http://archaeologydataservice.ac.uk/myads/
próbując odpowiedzieć na How to use R to download a zipped file from a SSL page that requires cookies prowadzi mnie do tego:
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")
Ale po funkcjach POST
i GET
po prostu otrzymuję kod HTML tej samej strony z ciasteczkami, którą otrzymałem z download.file
:
> 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...
...
Patrząc na http://archaeologydataservice.ac.uk/about/Cookies wydaje się, że sytuacja cookies na tej stronie jest skomplikowana. Wydaje się, że ten rodzaj złożoności plików cookie nie jest niczym niezwykłym dla dostawców danych w Wielkiej Brytanii: automating the login to the uk data service website in R with RCurl or httr
Jak mogę użyć R, aby ominąć ciasteczka na tej stronie?
Dałem szansę na Ubuntu 14.04, R 3.2.3 i Firefox. 'dr $ open()' raporty '[1]" Łączenie ze zdalnym serwerem " Niezdefiniowany błąd w wywołaniu RCurl.Error w queryRD (paste0 (serverURL,"/session ")," POST ", qdata = toJSON (serverOpts)): ' –
To zawsze była moja największa nić do wybrania z Selenium w ogóle (niekoniecznie R pkg). Uzyskanie spójności między Windows, OS X i * nix jest tak trudne.Mam nadzieję, że ludzie mogą do tego dodać (wszystkie moje systemy * nix są bardzo cienko skonfigurowanymi bezgłowymi serwerami i nie mam zamiaru próbować opanować dzisiejszego sterownika phantomjs :-) – hrbrmstr
OK, znalazłem sposób, aby sprawić, żeby działał na moim komputer. Musiałem ręcznie uruchomić samodzielny serwer selenu za pomocą 'java -jar selenium-server-standalone-2.48.0.jar'. Wtedy mogę się połączyć. –