Come scaricare con wget senza seguire i collegamenti con i parametri


11

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 come 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 serverfault.com/questions/156045/…
Bryan,

Dove dovrei averlo pubblicato?
Tie-fighter

questo è il posto giusto Non è una domanda del server.
David Z,

Comunque ho avuto le risposte migliori a serverfault;)
Tie-fighter

Risposte:


5

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


4
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

Potrebbe essere vero riguardo al requisito di versione. Avevo v1.12 e l'opzione non era valida. Dopo l'aggiornamento alla v1.15 lo era.
yunzen

L'alternanza di Regex usando il |simbolo ("pipe") non funziona per me con GNU Wget 1.16.
sampablokuper,

0
wget -R "*?action=*"

Ciò escluderà tutto ciò che contiene ?action=nel suo nome.


3
"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. "
Tie-fighter

Hmm, devo averlo perso. Sembra che non puoi farlo con wget se non sa nemmeno che sono file diversi. Suggerisco un programma diverso.
Daisetsu,

-3

Direi che fare sanguisughe su un sito wiki pubblico è una cattiva pratica, perché carica ulteriormente.

Se una wiki è pubblica e i proprietari del sito non si preoccupano di condividere il contenuto, di solito forniscono un dump di back-end scaricabile (database o altro). Quindi dovresti semplicemente scaricare il pacchetto di dati, impostare un'istanza locale dello stesso motore wiki, importare i dati in esso e avere una copia locale. Dopodiché, se lo desideri, puoi fare le sanguisughe localmente.


ci sono -w secondi. ad es. -w 5. gnu.org/software/wget/manual/html_node/…
barlop
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.