Como faço para baixar PDFs do PubMed, dados seus IDs?

1

Eu tenho IDs PubMed para arquivos que eu preciso baixar do site PubMed no formato .pdf . Eu tentei este script:

#!/usr/bin/env bash

Link="http://www.ncbi.nlm.nih.gov/pubmed/"

ID=(10021369         
10051005
10051007
100562
10064668
10071185
)

for f in ${ID[]};
do
   wget  --user-agent="Mozilla/5.0 (Windows NT 5.2; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" \
         -l1 --no-parent -A.pdf ${Link}${f}/pdf/ -O ${f}.pdf
done

Isso me dá arquivos PDF, mas não consigo abrir nenhum deles. O que estou fazendo errado?

    
por nlp 12.11.2013 / 18:50

2 respostas

4

Por que você esperaria conseguir fazer o download de PDFs desse URL? O PubMed geralmente não oferece PDFs, dá um link para a página da revista e você obtém o PDF a partir daí.

De qualquer forma, o seu script está bem, a questão é que os links que você está dando não apontam para arquivos PDF, mas arquivos XML e é isso que está sendo baixado:

$ ls
10021369.pdf  10051007.pdf  10064668.pdf
10051005.pdf  100562.pdf    10071185.pdf

$ file *
10021369.pdf: XML document text
10051005.pdf: XML document text
10051007.pdf: XML document text
100562.pdf:   XML document text
10064668.pdf: XML document text
10071185.pdf: XML document text

Para fazer o download de PDFs, você precisará fornecer links que apontam para arquivos PDF. Você pode testar isso apontando seu navegador para um dos links que seu script visita. Por exemplo, link . Se você visitar esse link, verá que não é um arquivo PDF.

Se todos os seus PMID forem links para artigos que também estejam no PubMed Central, você poderá obter os PDFs depois de converter os IDs do PubMed em IDs do PubMed Central:

#!/usr/bin/env bash

Link="http://www.ncbi.nlm.nih.gov/pubmed/"
PMCLink="http://www.ncbi.nlm.nih.gov/pmc/articles/"
ID=(10021369         
10051005
10051007
100562
10064668
10071185
)

for f in ${ID[@]};
do
  PMCID=$(wget  --user-agent="Mozilla/5.0 (Windows NT 5.2; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" \
   -l1 --no-parent ${Link}${f} -O - 2>/dev/null | grep -Po 'PMC\d+' | head -n 1)
    if [ $PMCID ]; then
       wget  --user-agent="Mozilla/5.0 (Windows NT 5.2; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" \
            -l1 --no-parent -A.pdf ${PMCLink}${PMCID}/pdf/ -O ${f}.pdf 2>/dev/null
    else
       echo "No PMC ID for $f"
    fi

done

A execução deste script fará o download dos 2 PDFs disponíveis gratuitamente a partir dos IDs que você forneceu ( 10051005.pdf e 10051007.pdf ) e imprimirá um erro para o restante:

No PMC ID for 10021369
No PMC ID for 100562
No PMC ID for 10064668
No PMC ID for 10071185

Você terá que fazer o restante manualmente ou descobrir como analisar os URLs relevantes.

    
por 12.11.2013 / 19:25
0

Isso deve fazer o truque. O autor parece estar ativamente mantendo o código a partir de maio de 2016.

link

    
por 23.06.2016 / 00:38