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.htm
und 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.