wget download ricorsivo, ma non voglio seguire tutti i link


10

Sto cercando di eseguire il mirroring di un sito Web utilizzando wget, ma non voglio scaricare molti file, quindi sto usando l' --rejectopzione di wget per non salvare tutti i file. Tuttavia, wget scaricherà comunque tutti i file e successivamente rimuoverà il file se corrisponde alla mia opzione di rifiuto.

C'è un modo per dire a wget di non seguire determinati collegamenti se corrispondono a un carattere jolly della shell? Se wget non può farlo, c'è qualche altro comando linux comune che può farlo?


3
Pubblica l'intero comando per favore. Rende molto più facile la risoluzione dei problemi.
Joseph Kern,

Risposte:


9

Potresti anche provare HTTrack che ha, IMO, logica di inclusione / esclusione più flessibile e intuitiva. Qualcosa come questo...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

Le regole verranno applicate in ordine e sovrascriveranno le regole precedenti ...

  1. Escludere tutto
  2. Ma includi https://example.com/images/ *
  3. Ma escludi tutto ciò che termina con swf

Scaricherebbe CSS, immagini ecc. Con URL aggiornati?
brandizzi,

6

Sembra che questo non sia possibile in wget


1

Nella sezione --reject di 'man wget':

"Nota che se uno qualsiasi dei caratteri jolly, *,?, [O], appare in un elemento di acclist o rejlist, sarà trattato come uno schema, piuttosto che un suffisso."

Se lo stai facendo, potresti voler dare esempi dei modelli che stai usando e di ciò che pensi debbano corrispondere, e ciò non funziona. Dici che stanno abbinando, ma sei sicuro?

Inoltre, assicurati di mettere questo elenco tra virgolette, quindi la shell non espande quei caratteri jolly prima di passare l'argomento / i da wget.

Anche se il tuo sistema non ha la versione 1.12, leggi la sezione Tipi di file del manuale qui . Secondo il registro delle modifiche, il manutentore ha aggiunto alcuni avvertimenti:

* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.

Le opzioni --reject sono tra virgolette. Vedo che corrispondono ai file corretti perché dopo il download del file, wget rimuove il file. Voglio solo smettere di scaricare il file in primo luogo
Rory,

Questi sono file htm (l)? Secondo il manuale, questi vengono scaricati indipendentemente da cosa.
Kyle Brandt,

Sì. i file che voglio rifiutare sono file HTML. So che vengono scaricati indipendentemente da cosa. C'è un modo per impedirlo?
Rory,

1

È possibile limitare il livello di ricorsione con l' -l NUMBERopzione, se ciò aiuta (non seguendo un certo schema regex).

Un livello di "2" scarica index.html, i suoi siti secondari / immagini / ecc. E i collegamenti sul sito secondario.


no, non sarebbe utile in questo caso
Rory,

1

come usi wget? prova ad usarlo in questo modo:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

questo comando ignorerà i file gif, jpg e swf.


I file che Rory McCann vuole rifiutare sono file HTML, ma vuole conservare altri file HTML, quindi questa sintassi non si applica alla sua domanda.
Royce Williams

1

Una soluzione alternativa sarebbe eseguire wget attraverso un server proxy. Imposta il proxy per non consentire determinati schemi. Questo impedirebbe a wget di scaricarli in primo luogo.

wget scaricherà e rimuoverà un file che corrisponde al modello -R. può anche corrispondere a modelli, non solo estensioni o parti di nomi di file. Tuttavia, non impedisce a wget di scaricare prima e cancellare in seguito.

httrack ha alcune caratteristiche interessanti, ma nella mia esperienza il modo in cui salva un "file" potrebbe essere un po 'eccentrico, ad esempio se httrack si imbatte in index.asp? Type = BASIC & PAGEID = 2234234
può salvarlo ma devi dirlo per preservare il parti della query,
ad esempio% h% p /% n% [TYPE: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
the @ è un segnaposto per un punto interrogativo, puoi rinominare i file in seguito, o forse sfuggire a un punto interrogativo invece? il problema è che.% t aggiungerà un '.html' alla fine del tuo URI che originariamente non aveva un '.html' E se lo togli, alle immagini che i download di httrack manterranno un'estensione di file.

Meglio usare wget IMHO

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.