Come scaricare con wget senza seguire i collegamenti con i parametri


7

Sto cercando di scaricare due siti per l'inclusione su un CD:

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

Il problema che sto avendo è che si tratta di entrambi i wiki. Quindi, durante il download con ad esempio:

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

Ricevo molti file perché segue anche collegamenti come ...? Action = edit ...? Action = diff & version = ...

Qualcuno sa un modo per aggirare questo?

Voglio solo le pagine correnti, senza immagini e senza differenze, ecc.

PS:

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

Questo ha funzionato per berkeley ma boinc-wiki.info mi dà ancora problemi: /

PPS:

Ho ottenuto quelle che sembrano essere le pagine più rilevanti con:

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

Non è necessario un incrocio tra superutente e serverfault superuser.com/questions/158318/…
Bryan,

Dove dovrei averlo pubblicato?
Tie-fighter

Risposte:


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

( --reject-type posixper impostazione predefinita). Funziona solo per versioni recenti (> = 1.14) di wget, secondo altri commenti.

Attenzione, sembra che tu possa usare --reject-regexuna sola volta per wgetchiamata. Cioè, devi usare |in una singola regex se vuoi selezionare su più regex:

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

2
Regex in wget non è ancorato all'inizio o alla fine, quindi nel tuo primo esempio wget --reject-regex '\?' http://example.comè sufficiente.
Stéphane Gourichon,

4

La documentazione per wget dice:

Si noti inoltre che le stringhe di query (stringhe alla fine di un URL che iniziano con un punto interrogativo ('?') Non sono incluse come parte del nome file per le regole di accettazione / rifiuto, anche se in realtà contribuiranno al nome scelto per il file locale. Si prevede che una versione futura di Wget fornirà un'opzione per consentire la corrispondenza con le stringhe di query.

Sembra che questa funzionalità sia sul tavolo da un po 'di tempo e che non ci sia stato fatto nulla.

Non l'ho usato, ma sembra che httrack abbia una serie di funzioni di filtro più robuste di wget e potrebbe essere più adatto a ciò che stai cercando (leggi i filtri qui http://www.httrack.com/html /fcguide.html ).


+1 per indicarmi httrack. Sembra meglio quindi wget, e wget sembra stagnante.
Stefan Lasiewski,

Ho provato Winhttrack ma si comporta in modo divertente. Scarica file e attraversa directory che non dovrebbe: /
Tie-fighter

Forse un giorno wget sarà risolto. Per ora httrack e pavuk sembrano entrambi belli.
joeytwiddle,

3

La nuova versione di wget (v.1.14) risolve tutti questi problemi.

Devi usare la nuova opzione --reject-regex=....per gestire le stringhe di query.

Nota che non sono riuscito a trovare il nuovo manuale che include queste nuove opzioni, quindi devi usare il comando help wget --help > help.txt


1

Pavuk dovrebbe essere in grado di farlo:

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

Esempio di Mediawiki:

[...]

-skip_url_pattern ' oldid = , azione = modifica , action = la storia , diff = , limite = , [/ =] Utente: , [/ =] User_talk: , [^ p] / Special: , = Special: [^ R] , .php / Special: [^ LUA] [^ onl] [^ nul] , MediaWiki: , ricerca: , Aiuto: '

[...]


1

Sembra che tu stia cercando di evitare di scaricare pagine speciali di MediaWiki. Ho risolto questo problema una volta evitando la index.phppagina:

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

Tuttavia, il wiki ha usato gli URL come visto in Wikipedia ( http://<wiki>/en/Theme) e non lo schema che ho visto in altri luoghi ( http://<wiki>/index.php?title=Theme). Poiché il link che hai fornito utilizza gli URL nel modello di Wikipedia, penso che questa soluzione possa funzionare anche per te.


0

'-R rejlist --reject rejlist' Specifica elenchi separati da virgole di suffissi o schemi di nomi file da accettare o rifiutare (vedi Tipi di file). Se uno qualsiasi dei caratteri jolly, '*', '?', '[' O ']', appare in un elemento di acclist o rejlist, verrà trattato come un pattern, piuttosto che un suffisso.

I motivi sono probabilmente quello che vuoi. Non sono sicuro di quanto siano sofisticati i modelli, ma puoi provare ad accettare solo determinati file o bloccare:

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

Accettare:

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

Modifica: nvm alla luce dell'altro post.


Funziona su stringhe di query? Ogni versione di wget che ho usato applica solo modelli di elenchi di scarti alla porzione di file dell'URL. Ci proverò e vedrò.
Evan Anderson,

Non l'ho provato. Ho appena cercato la documentazione. Ho scoperto che utilizza la convenzione shell, ma la tua esperienza parlerebbe più della mia per quanto riguarda la funzione operativa della corrispondenza.
Joshua Enfield,

Sfuggire al "?" non sembra ottenere wget per fare ciò che l'OP vorrebbe sulla mia scatola CentOS 5.3 con wget 1.11.4.
Evan Anderson,
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.