Wie kann ich das Herunterladen von Dateien automatisieren?

Wie kann ich das Herunterladen von Dateien automatisieren?

Ich habe ein Buch bekommen, in dem ein Pass enthalten war, mit dem ich auf digitale Versionen hochauflösender Scans vieler der im Buch enthaltenen Kunstwerke zugreifen konnte. Unglaublich! Leider besteht die Präsentation all dessen aus 177 Seiten mit jeweils 8 Bildern und Links zu Zip-Dateien mit JPGs. Das Durchstöbern ist äußerst mühsam und ich hätte gerne alle Dateien auf einmal, anstatt mich durch jede einzelne klicken zu müssen.

archive_bookname/index.1.htm - archive_bookname/index.177.htm jede dieser Seiten hat jeweils 8 Links zu den Dateien

Verknüpfungen zu Dateien wie <snip>/downloads/_Q6Q9265.jpg.zip, <snip>/downloads/_Q6Q7069.jpg.zip, <snip>/downloads/_Q6Q5354.jpg.zip., die nicht ganz in der richtigen Reihenfolge sind. Ich kann keine Verzeichnisliste des übergeordneten /downloads/Ordners erhalten.

Außerdem befindet sich die Datei hinter einer Anmeldewand. Daher kann die Verwendung mit einem anderen Tool als dem Browser schwierig sein, wenn man nicht weiß, wie man die Sitzungsinformationen neu erstellt.

Ich habe mir wget ein wenig angesehen, bin aber ziemlich verwirrt und habe keine Ahnung, ob es mir dabei helfen wird. Irgendwelche Ratschläge, wie ich das angehen kann? Kann wget das automatisch für mich tun?

Antwort1

Sie können eine HTML-Eingabedatei angeben mit

wget -F -i <file>

Sie können also einfach die HTML-Dateien ausgeben und sie durchlaufen
(ich habe eine Basis-URL für relative Links hinzugefügt):

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

Alternative

Sie können die Links einfach mit einer beliebigen Methode in eine Datei (durch Zeilenumbrüche getrennt) schreiben und Folgendes tun:

wget -i <url-file>

Eine gute Möglichkeit, an diese Links zu gelangen, wäre:

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

möglicherweise in einer For-Schleife, die an „URL-Datei“ angehängt wird

Antwort2

Die Verwendung von Python könnte einfacher sein. Dies ist also eine Lösung mit Python. Wenn Python für Sie keine Option ist, ignorieren Sie es. :)

Ich gehe davon aus, dass das Scraping der Website legal ist.

Schreiben Sie ein einfaches Python-Skript zum Durchlaufen archive_bookname/index.1-177.htmund Verwerfen mitSchöne Suppe, suchen Sie die Links entweder mit CSS-Klassenselektoren oder einfachem Regex-Matching und verwenden Sie dannurllib.urlretrieve()um die Dateien zu bekommen. So würde ich es machen.

Antwort3

Oder Sie verwenden einfach Perl und sein brillantes Modul namens www::mechanize. Es ist wirklich einfach, etwas zusammenzustellen, und in der offiziellen CPAN-Dokumentation gibt es unzählige Beispiele.

verwandte Informationen