So laden Sie mit wget herunter, ohne Links zu Parametern zu folgen


7

Ich versuche, zwei Websites zur Aufnahme auf eine CD herunterzuladen:

http://boinc.berkeley.edu/trac/wiki
http://www.boinc-wiki.info

Das Problem, das ich habe, ist, dass dies beide Wikis sind. Also beim Herunterladen mit zB:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif http://www.boinc-wiki.info/

Ich bekomme viele Dateien, weil es auch Links wie ...? Action = edit ...? Action = diff & version = ... folgt.

Kennt jemand einen Weg, um das zu umgehen?

Ich möchte nur die aktuellen Seiten, ohne Bilder und ohne Unterschiede usw.

PS:

wget -r -k -np -nv -l 1 -R jpg,jpeg,png,gif,tif,pdf,ppt http://boinc.berkeley.edu/trac/wiki/TitleIndex

Das hat bei Berkeley funktioniert, aber boinc-wiki.info macht mir immer noch Probleme: /

PPS:

Ich habe die anscheinend relevantesten Seiten mit:

wget -r -k -nv  -l 2 -R jpg,jpeg,png,gif,tif,pdf,ppt http://www.boinc-wiki.info

Keine Notwendigkeit, den Beitrag zwischen Superuser und Serverfault Superuser.com/questions/158318/… zu
Bryan

Wo hätte ich es posten sollen?
Tie-Fighter

Antworten:


7
wget --reject-regex '(.*)\?(.*)' http://example.com

( --reject-type posixstandardmäßig). Funktioniert wgetlaut anderen Kommentaren nur für neuere (> = 1.14) Versionen von .

Beachten Sie, dass Sie anscheinend --reject-regexnur einmal pro wgetAnruf verwenden können. Das heißt, Sie müssen |in einem einzelnen regulären Ausdruck verwenden, wenn Sie mehrere reguläre Ausdrücke auswählen möchten:

wget --reject-regex 'expr1|expr2|…' http://example.com

2
Regex in wget sind weder am Anfang noch am Ende verankert, daher reicht in Ihrem ersten Beispiel wget --reject-regex '\?' http://example.comaus.
Stéphane Gourichon

4

Die Dokumentation für wget lautet:

Beachten Sie auch, dass Abfragezeichenfolgen (Zeichenfolgen am Ende einer URL, die mit einem Fragezeichen ('?') Beginnen) nicht als Teil des Dateinamens für Akzeptanz- / Ablehnungsregeln enthalten sind, obwohl diese tatsächlich zum ausgewählten Namen beitragen Es wird erwartet, dass eine zukünftige Version von Wget eine Option bietet, die den Abgleich mit Abfragezeichenfolgen ermöglicht.

Es sieht so aus, als ob diese Funktionalität schon eine Weile auf dem Tisch liegt und nichts damit gemacht wurde.

Ich habe es nicht verwendet, aber httrack scheint eine robustere Filterfunktion als wget zu haben und passt möglicherweise besser zu dem, was Sie suchen (Informationen zu Filtern finden Sie hier http://www.httrack.com/html) /fcguide.html ).


+1 für den Hinweis auf httrack. Es sieht besser aus als wget und wget sieht stagnierend aus.
Stefan Lasiewski

Ich habe Winhttrack ausprobiert, aber es verhält sich lustig. Es lädt Dateien herunter und durchläuft Verzeichnisse, die es nicht sollte: /
Tie-Fighter

Vielleicht wird eines Tages wget behoben. Im Moment sehen sowohl httrack als auch pavuk gut aus.
Joeytwiddle

3

Die neue Version von wget (v.1.14) löst all diese Probleme.

Sie müssen die neue Option verwenden --reject-regex=...., um Abfragezeichenfolgen zu verarbeiten.

Beachten Sie, dass ich das neue Handbuch mit diesen neuen Optionen nicht finden konnte. Sie müssen daher den Befehl help verwenden wget --help > help.txt


1

Pavuk sollte dazu in der Lage sein:

http://pavuk.sourceforge.net/man.html#sect39

Mediawiki-Beispiel:

[...]

-skip_url_pattern ' oldid = , action = edit , action = history , diff = , limit = , [/ =] User : , [/ =] User_talk : , [^ p] / Special : , = Special: [^ R] , .php / Special: [^ LUA] [^ onl] [^ nul] , MediaWiki : , Suche : , Hilfe: '

[...]


1

Es sieht so aus, als würden Sie versuchen, das Herunterladen spezieller Seiten von MediaWiki zu vermeiden. Ich habe dieses Problem einmal gelöst, indem ich die index.phpSeite vermieden habe :

wget  -R '*index.php*'  -r ... <wiki link>

Das Wiki verwendete jedoch die URLs wie in Wikipedia ( http://<wiki>/en/Theme) und nicht das Muster, das ich an anderen Stellen gesehen habe ( http://<wiki>/index.php?title=Theme). Da der von Ihnen angegebene Link URLs im Wikipedia-Muster verwendet, kann diese Lösung meiner Meinung nach auch für Sie funktionieren.


0

'-R rejlist --reject rejlist' Geben Sie durch Kommas getrennte Listen von Dateinamensuffixen oder -mustern an, die akzeptiert oder abgelehnt werden sollen (siehe Dateitypen). Beachten Sie, dass wenn eines der Platzhalterzeichen '*', '?', '[' Oder ']' in einem Element von acclist oder rejlist erscheint, es als Muster und nicht als Suffix behandelt wird.

Muster sind wahrscheinlich das, was Sie wollen. Ich bin nicht sicher, wie ausgefeilt die Muster sind, aber Sie können entweder versuchen, nur bestimmte Dateien zu akzeptieren oder zu blockieren:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif,*\? http://www.boinc-wiki.info/

Akzeptieren:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif -A [a-zA-Z.] http://www.boinc-wiki.info/

Edit: nvm im Lichte des anderen Beitrags.


Dies funktioniert bei Abfragezeichenfolgen? Jede Version von wget, die ich verwendet habe, wendet nur Ablehnungslistenmuster auf den Dateiteil der URL an. Ich werde es versuchen und sehen.
Evan Anderson

Ich habe es nicht getestet. Ich habe gerade die Dokumentation nachgeschlagen. Ich habe festgestellt, dass es Shell-Konventionen verwendet, aber Ihre Erfahrung würde mehr als meine in Bezug auf die Arbeitsfunktion des Matchings sprechen.
Joshua Enfield

Dem "?" scheint wget nicht dazu zu bringen, das zu tun, was das OP auf meiner CentOS 5.3-Box mit wget 1.11.4 möchte.
Evan Anderson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.