Verwenden von Wget zum rekursiven Crawlen einer Site und Herunterladen von Bildern

13

Wie weisen Sie wget an, eine Website rekursiv zu crawlen und nur bestimmte Arten von Bildern herunterzuladen?

Ich habe versucht, damit eine Site zu crawlen und nur JPEG-Bilder herunterzuladen:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

Obwohl page1.html Hunderte von Links zu Unterseiten enthält, die selbst direkte Links zu Bildern enthalten, meldet wget Dinge wie "Entfernen von subpage13.html, da es abgelehnt werden sollte" und lädt niemals Bilder herunter, da keine direkt mit verlinkt sind von der Startseite.

Ich gehe davon aus, dass dies darauf zurückzuführen ist, dass mein --accept sowohl zum Crawlen als auch zum Filtern von Inhalten zum Herunterladen verwendet wird, während ich möchte, dass es nur zum Herunterladen von Inhalten verwendet wird. Wie kann ich wget dazu bringen, alle Links zu crawlen, aber nur Dateien mit bestimmten Erweiterungen wie * .jpeg herunterzuladen?

BEARBEITEN: Einige Seiten sind auch dynamisch und werden über ein CGI-Skript generiert (z. B. img.cgi? Fo9s0f989wefw90e). Selbst wenn ich cgi zu meiner Akzeptanzliste hinzufüge (z. B. --accept = jpg, jpeg, html, cgi), werden diese immer abgelehnt. Gibt es einen Weg, dies zu umgehen?

Cerin
quelle

Antworten:

5

Warum versuchst du nicht zu benutzen wget -A jpg,jpeg -r http://example.com?

meoninterwebz
quelle
Die Frage besagt, dass einige der Bilder die Form /url/path.cgi?query haben, sodass Ihr Vorschlag diese nicht abruft.
Charles Stewart
1

Wie erwarten Sie, dass wget den Inhalt von subpage13.html (und damit die JPGs, auf die es verweist) kennt, wenn es nicht heruntergeladen werden darf? Ich schlage vor, Sie erlauben HTML, bekommen, was Sie wollen, und entfernen dann, was Sie nicht wollen.


Ich bin mir nicht ganz sicher, warum Ihre CGIs abgelehnt werden ... Gibt es einen Fehler, der von wget ausgegeben wird? Vielleicht machen Sie wget verbose ( -v) und sehen. Könnte am besten als separate Frage sein.

Das heißt, wenn Sie sich nicht für Bandbreite interessieren und viele herunterladen, entfernen Sie, was Sie nicht wollen, es spielt keine Rolle.


Schauen Sie auch aus --html-extension

Von der Manpage:

-E

--html-Erweiterung

Wenn eine Datei vom Typ application / xhtml + xml oder text / html heruntergeladen wird und die URL nicht mit dem regulären Ausdruck endet. [Hh] [Tt] [Mm] [Ll]?, Bewirkt diese Option, dass das Suffix .html lautet an den lokalen Dateinamen angehängt. Dies ist beispielsweise nützlich, wenn Sie eine Remote-Site spiegeln, die ASP-Seiten verwendet, die gespiegelten Seiten jedoch auf Ihrem Standard-Apache-Server angezeigt werden sollen. Eine weitere gute Verwendung hierfür ist das Herunterladen von CGI-generierten Materialien. Eine URL wie http://site.com/article.cgi?25 wird als article.cgi? 25.html gespeichert.

Beachten Sie, dass auf diese Weise geänderte Dateinamen jedes Mal erneut heruntergeladen werden, wenn Sie eine Site erneut spiegeln, da Wget nicht erkennen kann, dass die lokale X.html-Datei der Remote-URL X entspricht (da noch nicht bekannt ist, dass die URL eine Ausgabe vom Typ erzeugt text / html oder application / xhtml + xml. Um dieses erneute Herunterladen zu verhindern, müssen Sie -k und -K verwenden, damit die Originalversion der Datei als X.orig gespeichert wird.


--restrict-file-names=unix könnte auch aufgrund dieser CGI-URLs nützlich sein ...

Teuer
quelle
Ich sollte aufhören, wget-Optionen zu verknüpfen. --no-parentIch wollte gerade darauf hinweisen, aber ich werde dort aufhören.
Teuer
0

Sie können MetaProducts Offline Explorer auch ohne Programmierung verwenden

TiansHUo
quelle
-1

Versuchen Sie, die --page-requisitesOption hinzuzufügen


quelle
Damit werden alle verknüpften Medien heruntergeladen. Die einzige Möglichkeit, wget zum Herunterladen von Bildern zu verwenden, besteht darin, ALLE Inhalte auf einer Seite herunterzuladen?!
Cerin