wget hat eine Option, die -np
das Abrufen von Dateien aus einem übergeordneten Verzeichnis deaktiviert. Ich brauche etwas Ähnliches, aber etwas flexibler. Erwägen:
www.foo.com/bar1/bar2/bar3/index.html
Ich möchte alles bekommen, aber nicht "höher" (in der Baumhierarchie) als bar2
(!). Also bar2
sollte auch geholt werden aber nicht bar1
.
Gibt es eine Möglichkeit, wget selektiver zu machen?
Hintergrund: Ich versuche, eine Website mit einer ähnlichen logischen Struktur zu spiegeln - Ausgangspunkt, dann nach oben, dann nach unten. Wenn es ein anderes Tool gibt wget
, das für ein solches Layout besser geeignet ist, lassen Sie es mich bitte ebenfalls wissen.
Aktualisieren
Oder anstatt eine mögliche Tiefe anzugeben, vielleicht so etwas wie "keine Eltern, es sei denn, sie stimmen mit dieser oder jener URL überein".
Update 2
Es gibt eine Struktur auf dem Server, oder? Sie können es als Baum visualisieren. Normalerweise beginnt man mit "--no-parent" an einem Punkt A und geht nur nach unten.
Mein Wunsch ist die Fähigkeit, nach oben zu gehen - ausgedrückt durch das Sagen, es ist erlaubt, X-Knoten zu steigen, oder (was 100% äquivalent ist), dass es erlaubt ist, bis zum B-Knoten zu steigen (wobei der Abstand BA = X ist).
In allen Fällen bleiben die Regeln für das Herunterfahren so, wie sie von den Benutzern definiert wurden (zum Beispiel - nur für Y-Ebenen).
Wie lagere ich es? Eigentlich ist es nicht wirklich die Frage - wget
standardmäßig wird die Serverstruktur neu erstellt, hier gibt es nichts zu befürchten, oder es besteht keine Notwendigkeit, irgendetwas zu reparieren. Also in 2 Worten - wie immer.
Update 3
Verzeichnisstruktur unten - Nehmen wir an, dass in jedem Verzeichnis nur eine Datei vorhanden ist, in R - R.html und so weiter. Dies wird natürlich vereinfacht, da Sie mehr als eine Seite haben können.
R
/ \
B G
/ \
C F
/ \
A D
/
E
A (A.html) ist mein Ausgangspunkt, X = 2 (also ist B der Knoten der obersten Ebene, den ich abrufen möchte). In diesem Beispiel bedeutet dies, dass alle Seiten außer R.html und G.html abgerufen werden. A.html wird „Ausgangspunkt“ genannt , weil ich zu haben , von ihm zu starten, nicht von B.
Update 4
Die Benennung wird ab Update 3 verwendet.
wget OPTIONEN www.foo.com/B/C/A/A.html
Die Frage ist, welche Optionen es gibt, um alle Seiten aus Verzeichnis B und darunter abzurufen (in dem Wissen, dass Sie mit A.html beginnen müssen).
bar2
geholt aber nichtbar1
? Wo wirdbar2
wohnen? Was ist, wenn zwei oder mehr Verzeichnisse, die Sie nicht möchten, Unterverzeichnisse mit identischen Namen haben, deren Inhalt zusammengeführt werden soll? Es ist mit ziemlicher Sicherheit einfacher, einfach die ganze verdammte Seite zu bekommen und dann die Dinge nach Belieben zu beschneiden / zu bewegen.bar2
Verzeichnis und seinen gesamten Inhalt wollen. Wenn dies nicht der Fall ist, klären Sie dies bitte.Antworten:
Ich habe es nicht ausprobiert, aber mit -I und -X können Sie das bekommen, was Sie wollen. Meine ersten Versuche würden auf der Linie von sein
Erläuterung der Optionen:
quelle
Ich denke, die richtige Antwort ist hier die
--no-parent
Option:quelle
Sie müssen der URL ein endgültiges / hinzufügen, sonst erhalten Sie nicht das, was Sie wollen.
Wenn Sie den gesamten Inhalt unter www.myhostname.com/somedirectory abrufen möchten, sollte die Syntax wie folgt lauten:
Versuchen Sie es ohne das Ende / und sehen Sie, was passiert. Dann versuchen Sie es mit dem /.
quelle
Vielleicht fehlt mir etwas, aber wenn du das willst
funktioniert für mich (anhand Ihres Beispiels). Mit diesen Optionen erhalten Sie natürlich auch die gesamte darüber liegende Verzeichnisstruktur von
www.foo.com
unten nach unten. Wenn Sie nurbar2
auf höchstem Niveau wollen, dann tun Sie es-nH
wird das loswww.foo.com
und--cut-dirs=1
wird losbar1
, so dass Siebar2
und seine Unterverzeichnisse in das aktuelle Verzeichnis heruntergeladen werden. Weitere Informationen finden Sieman wget
unter gut lesbar und mit Beispielen.quelle
np
), aber ich suche nach einer allgemeinen Lösung, wenn die oberste Ebene über dem Startpunkt liegt.B
(gemäß Ihrem Beispiel) angeben , sondernA
? Wenn ja warum? Liegt das daran, dass Sie ein Skript automatisieren möchten oder aus einem anderen Grund? Ich bin mir auch nicht sicher, was du mit X = 2 meinst. Bedeutet das Level 2? Wenn Sie versuchen, Verzeichnisse weiter unten im Baum abzurufen, bin ich mir nicht sicher, wie Sie sichB
von diesen unterscheidenG
.