скачать pdf-файлы с помощью curl

Как загрузить hundereds .pdf-файлов с http://www.ncbi.nlm.nih.gov/pmc/articles с помощью цикла, например, для следующих идентификаторов документов:

PMC3386155 PMC3625956 PMC3477654 PMC3531051 PMC3114846 PMC3117879 PMC3130560 PMC3531173 PMC3546115 PMC3354575 PMC3771521 

Вот рабочий протестированный скрипт

Использование 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 

Так как удаленный сайт не позволяет агенту пользователя, как wget и curl , поэтому мы должны явно указывать пользовательский агент в wget

Использование 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 

Некоторые объяснения

  • -O Выходной файл
  • -J Выходное имя файла из имени удаленного заголовка ( curl 7.21.2 или curl 7.21.2 )
  • -L Удаленный сайт перенаправлен на другую страницу загрузки, чтобы использовать это
  • -A Пользовательский агент