Всплывающие окна блокируют массовую загрузку PDF-файлов с веб-сайта с помощью wget - PullRequest
0 голосов
/ 30 апреля 2018

Я бы хотел скачать несколько бесплатных pdf-файлов (копий старой газеты) с этого веб-сайта Австрийской национальной библиотеки, используя wget, используя скрипт bash ниже:

for year in {14..57}; do
  for month in `seq -w 1 12`; do # -w for leading zero
    for day in `seq -w 1 31`; do
      wget -A pdf -nc -E -nd --no-check-certificate --content-disposition http://anno.onb.ac.at/pdfs/ONB_lzg_18$year$month$day.pdf
    done
  done
done

Несмотря на то, что некоторые газетные выпуски недоступны, я не могу загрузить какие-либо выпуски, даже если они существуют. Я получил бы ошибки, такие как ошибка для существующего выпуска от 30 июня 1814 года, например:

http://anno.onb.ac.at/pdfs/ONB_lzg_18140630.pdf
Aufl"osen des Hostnamens anno.onb.ac.at (anno.onb.ac.at)... 193.170.112.230
Verbindungsaufbau zu anno.onb.ac.at (anno.onb.ac.at)|193.170.112.230|:80 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 404 Not Found
FEHLER 404: Not Found.

Однако, если вам нужно было загрузить соответствующие pdf-файлы вручную ( здесь , см. Правый верхний угол), вы должны нажать «ок» во всплывающем подтверждении. После того, как вы это сделали, я даже могу без проблем загрузить проблему через wget.

Как я могу сказать wget для подтверждения через командную строку подтверждения (вопрос, который вы получите, когда захотите скачать pdf), см. Скриншот ниже? Для этого есть команда в wget?

enter image description here

1 Ответ

0 голосов
/ 03 мая 2018

В вашем коде есть две проблемы.

  1. lgz газета доступна не на все даты
  2. PDF не всегда создаются и кэшируются на используемом вами URL. Сначала необходимо запустить другой URL-адрес, чтобы убедиться, что PDF-файл сгенерирован

Ниже приведен обновленный код, который должен работать

#!/bin/bash

for year in {14..57}; do
  DATES=$(curl -sS "http://anno.onb.ac.at/cgi-content/anno?aid=lzg&datum=18$year&zoom=33" |   gawk 'match($0, /datum=([^&]+)/, ary) {print ary[1]}' | xargs echo)

  for date in $DATES
  do 
      echo "Downloading for $date"

      curl "http://anno.onb.ac.at/cgi-content/anno_pdf.pl?aid=lzg&datum=$date" -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'DNT: 1' -H "Referer: http://anno.onb.ac.at/cgi-content/anno?aid=lzg&datum=$date" -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.9' --compressed

      wget -A pdf -nc -E -nd --no-check-certificate --content-disposition http://anno.onb.ac.at/pdfs/ONB_lzg_$date.pdf
  done
done
...