Dì a wget di non spider URL che corrisponde a un modello?


8

Voglio testare come si comporterebbe il mio sito quando viene sottoposto a spidering. Tuttavia, voglio escludere tutti gli URL contenenti la parola "pagina". Provai:

$ wget -r -R "*page*" --spider --no-check-certificate -w 1 http://mysite.com/

Il -Rflag dovrebbe rifiutare il pattern URL contenente la parola "pagina". Solo che sembra non funzionare:

Spider mode enabled. Check if remote file exists.
--2014-06-10 12:34:56--  http://mysite.com/?sort=post&page=87729
Reusing existing connection to [mysite.com]:80.
HTTP request sent, awaiting response... 200 OK

Come escludo il ragno di tale URL?

Risposte:


10

Dopo alcuni tentativi ed errori, mi rendo conto che la soluzione è semplicemente quella di utilizzare in --reject-regexquesto modo:

wget -r --reject-regex page --spider --no-check-certificate -w 1 http://mysite.com/

Urlregex non deve contenere caratteri jolly e quindi *page*non è valido, ma lo pageè.


1

Da man wget:

-R rejlist --reject rejlist
           Specify comma-separated lists of file name suffixes or patterns to
           accept or reject.

Questa opzione rifiuta solo i file che corrispondono al modello.

A rigor di termini, nel tuo URL pageè un parametro di richiesta, non l'ultima parte del percorso (ad esempio il nome del file).


Potresti voler scaricare tutti gli URL che wget trovato (ad esempio grep il registro per tutti gli URL scaricati), rimuovere quegli URL che non ti soddisfano (con grep -v, ad esempio) e infine fare in modo che wget recuperi gli URL rimasti. Per esempio:

# dump the whole website
wget ... -P dump -o wget.log  ...

# extract URLs from the log file
cat wget.log | grep http | tr -s " " "\012" | grep http >urls

# excludes URLs with the word page anywhere in it
cat urls | grep -v page >urls 

# delete previous dump, since it probably contains unwanted files
rm -rf dump

# Fetch URLs
cat urls | xargs wget -x

Potresti voler aggiungere altre opzioni di wget (ad es. --No-check-certificate) in base alle tue esigenze.


Ho letto il manuale alcune volte. Come puoi vedere, dice "suffissi o motivi del nome file ", quindi non è chiaro se il motivo deve essere un nome file. Tuttavia, sto cercando una soluzione che consenta l'esclusione di un pattern URL specifico.
Domanda Overflow

@QuestionOverflow Vedi la modifica per un esempio di come potresti farlo.
hellodanylo,

La tua seconda opzione spiderà l'intero sito, scaricando tutto. Quindi scaricherà quasi tutto una seconda volta. Sarebbe più efficiente scaricare tutto e quindi eliminare le parti che non ti soddisfano.
Dhasenan,
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.