Я хотел бы загрузить с https://hebrewbooks.org/ все бесплатные книги, используя простой скрипт.
Каждая книга (52 000 из них) имеет уникальный номер c номер назначены. Например: https://hebrewbooks.org/1 https://hebrewbooks.org/3 https://hebrewbooks.org/52000
https://hebrewbooks.org/1 https://hebrewbooks.org/3 https://hebrewbooks.org/52000
Но многие номера были пропущены или были удалены.
Обычно посетитель нажимает кнопку загрузки, которая возвращает: (номер книги 52000)
https://download.hebrewbooks.org/downloadhandler.ashx?req=52000
Или (для книги номер 1)
https://download.hebrewbooks.org/downloadhandler.ashx?req=1
Я хотел бы загрузить все файлы на локальный диск без необходимости запрашивать каждый файл индивидуально в браузере и т. д. c.
Я знаю, что это может быть достигнуто с помощью простого сценария (даже сценария bash).
Может кто-нибудь посоветовать мне, где искать или где найти похожая проблема, которая была решена.
Редактировать: я забыл важный вопрос. Как заставить скрипт изменить имя каждого загруженного файла с номера (например, 42000) на метаданные, включенные в каждый файл?
Как уже упоминалось, wget будет хорошим инструментом для использования. Может быть, попробуйте использовать его в al oop?
#! /bin/bash #iterate 52,000 times for i in {1..52000}; do sleep 1s wget [local path] "https://download.hebrewbooks.org/downloader.ashx?req=${i}" # $i is the current iteration, therefore collecting all 52,000 done
edit : Просто понял, что кто-то прокомментировал это по основному вопросу, но я оставлю это здесь для тех, кто не видеть их, как я.
Вы можете использовать wget для этой задачи:
wget /download/path/to/save/downloaded/file "https://download.hebrewbooks.org/downloader.ashx?req=book_number"
Дополнительная справка: https://askubuntu.com/questions/207265/how-to-download-a-file-from-a-website-via-terminal