Caro Elias
Você pode baixar o pacote fonte metagear (a beleza do opensource) aqui:
https://cran.r-project.org/src/contrib/Archive/metagear/metagear_0.1.tar.gz
Examinando a função PDF_download() notamos que ela usa três arquivos:
PDF_download.R, PDF_utils.R, PDF_collect.R e isPDF.R
para o doi "10.1371/journal.pone.0123511" a função está extraindo como alvo:
"content=\"http://journals.plos.org/plosone/article/asset?id=10.1371/journal.pone.0123511.PDF"
e o correto seria o link com atributo href:
"href=\"/plosone/article/asset?id=10.1371%2Fjournal.pone.0123511.PDF"
resolvendo em:
"http://journals.plos.org/plosone/article/asset?id=10.1371%2Fjournal.pone.0123511.PDF"
Segue um pequeníssimo ROBOT, veja que ele não prevê https e necessita
das urls dos jornais alvo.
# Author: salah
###############################################################################
require(RCurl)
require(XML)
rm(list=ls())
## seleciona o link alvo e converte em caracter
baixaURL = function(doi)
{
## link doi
urlDOI = paste0("http://dx.doi.org/", doi)
## download url
web = getURLContent(urlDOI)
tc = textConnection(web)
web = readLines(tc)
close(tc)
## captura os links
lnk = getHTMLLinks(web)
## converte para chr
doc = htmlParse(lnk)
w = capture.output(doc)
return(w)
}##end baixaURL
## prepara a url para download
urlPDF = function(w, journal)
{
a = unlist(strsplit(w, split = "\\s"))
b = unique(grep("pdf|PDF", a, value = TRUE))
cc = grep("href+", b, value = TRUE)
d = gsub("href\\=|\"|>", "", cc)
h = gsub(".*pdf|.*PDF", "", d)
outPDF = gsub(h[1], "", d)
return(paste0("http://", journal, outPDF))
}##end naturePDF
## faz o download do pdf
baixaPDF = function(urls, dest = "~")
{
j = unlist(strsplit(urls, "/"))
namePDF = grep(".pdf|.PDF", j, value = T)
## se houver pdf extra
for(i in 1:length(urls))
{
dir_name = paste0(dest, namePDF[i])
download.file(urls[i], dir_name)
}##end for
}##end baixaPDF
doiNature = c("10.1038/nutd.2016.11", "10.1038/srep17841",
"10.1038/srep25762")
doiPLOS = c("10.1371/journal.pone.0123511", "10.1371/journal.pbio.1002461")
j1 = "www.nature.com/"
j2 = "journals.plos.org"
DATA = data.frame(DOI = c(doiNature, doiPLOS), Journal = c(j1, j1, j1,
j2, j2), stringsAsFactors = FALSE)
destDir = "~/"
for(n in 1:nrow(DATA))
{
w = baixaURL(DATA$DOI[n])
urls = urlPDF(w, DATA$Journal[n])
print(urls)
baixaPDF(urls, destDir) ## faz o download
}
saudações
Em 22/05/2016 23:23, Elias Carvalho escreveu:
Desculpe Leonardo, segue o código mínimo, tem dois DOIs para poder
testar:
*library(metagear)
*
*
*
*DOI <- "10.1371/journal.pone.0123511" # Disponível em:
http://goo.gl/rhtvFx*
*# DOI <- "10.1038/srep17841" # Disponível em:
http://goo.gl/rNwOpk*
*filename <- "ArtigoTeste.pdf"
*
*folder <- "~"
*
*PDF_download(DOI, directory = folder, theFileName = filename,
validatePDF = TRUE, quiet = FALSE)*
Em 22 de maio de 2016 09:41, Elias Carvalho <ecaca...@gmail.com
<mailto:ecaca...@gmail.com>> escreveu:
Bom dia Pessoal
Estou baixando tentando baixar alguns pdf de artigos científicos
pelo DOI usando o pacote metagear, porém a maioria apresenta a
mensagem "failed, no valid url links detected", ou
"cannot open: HTTP status was '404 Not Found' PDF download...
skipped", mesmo ligando o proxy da universidade.
De 1800 artigos que preciso consegui por volta de uns 200 download
apenas.
Alguém poderia me dar uma ajuda em como resolver este problema ?
--
Best regards... 8^)
“The mind that is open to new ideas never come back
to its original size” /Albert Einstein/
--
Obrigado
Elias
--
Best regards... 8^)
“The mind that is open to new ideas never come back
to its original size” /Albert Einstein/
--
Obrigado
Elias
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo
m�nimo reproduz�vel.
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo
m�nimo reproduz�vel.