[R-br] Erro ao fazer download de PDFs: failed, no valid url links detected
salah
salah3.1416 em gmail.com
Sexta Maio 27 16:08:53 BRT 2016
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 <ecacarva em gmail.com
> <mailto:ecacarva em 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 em 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.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160527/9ac68044/attachment.html>
Mais detalhes sobre a lista de discussão R-br