faça o download de arquivos pdf usando o curl

2

Como baixar hundereds de arquivos .pdf do link usando um loop, por exemplo, para os seguintes IDs do documento:

PMC3386155
PMC3625956
PMC3477654
PMC3531051
PMC3114846
PMC3117879
PMC3130560
PMC3531173
PMC3546115
PMC3354575
PMC3771521
    
por sami 21.09.2013 / 20:14

1 resposta

4

Aqui está o Working Tested Script

Usando o wget

#!/usr/bin/env bash

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

ID=(    PMC3386155 PMC3625956 PMC3477654 PMC3531051
        PMC3114846 PMC3117879 PMC3130560 PMC3531173
        PMC3546115 PMC3354575 PMC3771521 )

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

Como o site remoto não permite o agente do usuário, como wget e curl , é por isso que precisamos especificar explicitamente o agente do usuário em wget

Usando o Curl

ID=( PMC3386155 PMC3625956 PMC3477654 PMC3531051 PMC3114846 PMC3117879 PMC3130560 PMC3531173 PMC3546115 PMC3354575 PMC3771521 )

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

Args='-O -J -L -A "Mozilla/5.0 (Windows NT 5.2; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"'

printf "%s\n" ${ID[@]}  | xargs -n1 -I{} echo curl $Args ${Link}'{}'/pdf/ | sh

Algumas explicações

  • -O Arquivo de saída
  • -J Nome do arquivo de saída do nome do cabeçalho remoto ( curl 7.21.2 ou mais recente)
  • -L Site remoto redirecionado para outra página de download a seguir que usa este
  • -A Agente do usuário
por 21.09.2013 / 21:11