Wie man mit wget crawlt, um NUR HTML-Dateien herunterzuladen (ignoriere Bilder, CSS, JS)

14

Grundsätzlich möchte ich eine ganze Site mit Wget crawlen, aber ich muss NIEMALS andere Assets (z. B. Bilder, CSS, JS usw.) herunterladen. Ich möchte nur die HTML-Dateien.

Google-Suchen sind völlig nutzlos.

Hier ist ein Befehl, den ich ausprobiert habe:

wget --limit-rate=200k --no-clobber --convert-links --random-wait -r -E -e robots=off -U "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36" -A html --domain=www.example.com http://www.example.com

Unsere Website ist Hybrid-Flat-PHP und CMS. Also, HTML "Dateien" könnten /path/to/page, /path/to/page/, /path/to/page.php, oder /path/to/page.html.

Ich habe sogar aufgenommen, -R js,cssaber es lädt immer noch die Dateien herunter, dann lehnt es sie ab (sinnlose Verschwendung von Bandbreite, CPU und Serverlast!).

Nathan JB
quelle
2
Was ist der Befehl, den Sie bisher ausprobiert haben? Wenn die Benennung von Dateien konsistent ist, sollten Sie in der Lage sein, das Flag -R zu verwenden. Alternativ können Sie das Flag --ignore-tags verwenden und Skript- und img-Tags ignorieren.
ernie
Nebenstehende Abbildung
Ich habe versucht, --accept = html zu verwenden, aber es lädt CSS-Dateien herunter, DANN löscht es sie. Ich möchte verhindern, dass sie jemals heruntergeladen werden. Eine Header-Anfrage ist jedoch in Ordnung - ZB bemerke ich Length: 558 [text/css]auf den Dateien, die ich nicht möchte. Wenn ich die Anfrage stoppen könnte, wenn der Header nicht zurückkehrt text/html, wäre ich hocherfreut.
Nathan JB

Antworten:

13

@ ernies Kommentar zu --ignore-tagsführe mich auf den richtigen Weg! Als ich aufblickte --ignore-tagsin man, bemerkte ich --follow-tags.

Einstellung --follow-tags=aerlaubt mir zu überspringen img, link, scriptetc.

Es ist wahrscheinlich zu begrenzt für einige Leute, die nach der gleichen Antwort suchen, aber es funktioniert in meinem Fall tatsächlich gut (es ist in Ordnung, wenn ich ein paar Seiten vermisse).

Wenn jemand eine Möglichkeit findet, das Scannen ALLER Tags zuzulassen, aber verhindert, dass wgetDateien erst nach dem Herunterladen abgelehnt werden (sie sollten vor dem Herunterladen anhand des Dateinamens oder des Inhaltstyps der Kopfzeile abgelehnt werden), nehme ich ihre Antwort sehr gerne an!

Nathan JB
quelle
5

Was ist mit dem Hinzufügen der Optionen:

--reject '*.js,*.css,*.ico,*.txt,*.gif,*.jpg,*.jpeg,*.png,*.mp3,*.pdf,*.tgz,*.flv,*.avi,*.mpeg,*.iso'
--ignore-tags=img,link,script 
--header="Accept: text/html"
Spir
quelle