Diga ao wget para não configurar o URL correspondente a um padrão?

8

Quero testar como o meu site se comportaria ao ser spider. No entanto, quero excluir todos os URLs que contêm a palavra "página". Eu tentei:

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

O -Rsinalizador deve rejeitar o padrão de URL que contém a palavra "página". Exceto que parece não funcionar:

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

Como excluo o spidering desse URL?

Pergunta Overflow
fonte

Respostas:

10

Após algumas tentativas e erros, percebo que a solução é simplesmente usar --reject-regexassim:

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

O urlregex não deve conter curinga e, portanto, *page*é inválido, mas pageé.

Pergunta Overflow
fonte
1

De man wget:

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

Esta opção rejeitará apenas os arquivos que correspondem ao padrão.

A rigor, no seu URL pageexiste um parâmetro de solicitação, não a última parte do caminho (por exemplo, nome do arquivo).


Você pode despejar todos os URLs que o wget encontrou (por exemplo, grep o log de todos os URLs baixados), remover os URLs que não o satisfazem (com grep -v, por exemplo) e finalmente fazer com que o wget recupere os URLs restantes. Por exemplo:

# 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

Você pode querer adicionar outras opções do wget (por exemplo, --no-check-certificate) de acordo com suas necessidades.

hellodanylo
fonte
Eu li o manual algumas vezes. Como você pode ver, ele diz "sufixos ou padrões de nome de arquivo "; portanto, não está claro se o padrão deve ser um nome de arquivo. No entanto, estou procurando uma solução que permita a exclusão de um padrão de URL específico.
Pergunta Overflow
@QuestionOverflow Veja a edição para um exemplo de como você pode fazer isso.
1111414
Sua segunda opção aranha o site inteiro, baixando tudo. Então ele baixaria quase tudo uma segunda vez. Seria mais eficiente baixar tudo e excluir as partes que não o satisfazem.
dhasenan