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?

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é.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.