Я хотел бы загрузить несколько бесплатных pdf-файлов (копий старой газеты) с этого сайта Австрийской национальной библиотеки, используя wget
, используя скрипт ниже:
#!/bin/bash
#A script to download issues of the Leipziger Zeitung (1814-1857)
for year in {14..57}; do
DATES=$(curl -sS "http://anno.onb.ac.at/cgi-content/anno?aid=lzg&datum=18$year" | 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
Я выяснил, что скрипт просто загружает проблемы только по понедельникам и субботам (и, если они не доступны, проблемы со вторника, соответственно, если доступны воскресные выпуски), но не остальную часть недели, см. Вывод bash ниже.
Downloading for 18140228
Downloading for 18140402
Downloading for 18140404
Downloading for 18140409
Downloading for 18140412
Downloading for 18140416
Downloading for 18140418
Downloading for 18140423
Downloading for 18140425
Downloading for 18140430
В те дни, не каждый день или месяцы были опубликованы или доступны сегодня. Однако, если вы сравните этот календарь на 1814 год, например, апрель, вы обнаружите, что скрипт загружает только два выпуска в неделю. Он загружает выпуски от 4 апреля 1814 года и 9 апреля, но не загружает доступные выпуски с 5 по 7 апреля. Это верно для других недель в апреле 1814 года и любого другого доступного месяца в пределах соответствующего промежутка времени между 1814 и 1857.
Я новичок в написании сценариев, и мне помогли с настоящим (см. этот вопрос здесь), поэтому я не знаю, как заставить его загрузить все доступные проблемы.
Кроме того, с помощью time
я измерил, что выполнение команды curl занимает от 3 до 5 секунд. Есть ли способ как ускорить работу скрипта?