Como fazer o download com o wget sem seguir os links com os parâmetros


11

Estou tentando baixar dois sites para inclusão em um CD:

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

O problema que estou tendo é que esses dois são wikis. Então, ao baixar com, por exemplo:

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

Eu recebo muitos arquivos porque ele também segue links como ...? Action = edit ...? Action = diff & version = ...

Alguém sabe uma maneira de contornar isso?

Eu só quero as páginas atuais, sem imagens, sem diferenças etc.

PS:

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

Isso funcionou para berkeley, mas o boinc-wiki.info ainda está me causando problemas: /

PPS:

Recebi o que parece ser as páginas mais relevantes com:

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

Não há necessidade de pós cruzamento entre superusuário e serverfault serverfault.com/questions/156045/...
Bryan

Onde eu deveria ter postado?
Tie-fighter

este é o lugar certo. Não é uma pergunta do servidor.
David Z

Ainda assim eu tenho as melhores respostas em serverfault;)
Tie-lutador

Respostas:


5

A nova versão do wget (v.1.14) resolve todos esses problemas.

Você precisa usar a nova opção --reject-regex=....para manipular seqüências de caracteres de consulta.

Observe que eu não consegui encontrar o novo manual que inclui essas novas opções, então você deve usar o comando help wget --help > help.txt


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

( --reject-type posixpor padrão). Funciona apenas para versões recentes (> = 1.14) do wgetporém, de acordo com outros comentários.

Cuidado, parece que você pode usar --reject-regexapenas uma vez por wgetchamada. Ou seja, você precisa usar |em uma única regex se desejar selecionar em várias regex:

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

Pode ser verdade sobre o requisito da versão. Eu tinha a v1.12 e a opção não era válida. Após a atualização para a v1.15, foi.
usar o seguinte comando

A alternância de regex usando o |símbolo ("pipe") não está funcionando para mim com o GNU Wget 1.16.
sampablokuper

0
wget -R "*?action=*"

Isso excluirá qualquer coisa que contenha ?action=em seu nome.


3
"Observe também que as strings de consulta (strings no final de um URL que começam com um ponto de interrogação ('?')) Não são incluídas como parte do nome do arquivo para regras de aceitação / rejeição, mesmo que elas realmente contribuam para o nome escolhido para o arquivo local. Espera-se que uma versão futura do Wget forneça uma opção para permitir a correspondência com cadeias de consulta. "
Tie-fighter

Hmm, eu devo ter perdido isso. Parece que você não pode fazer isso com o wget, se ele nem sabe que são arquivos diferentes. Eu sugiro um programa diferente.
Daisetsu

-3

Eu diria que leeching um site público de wiki é uma prática ruim, porque coloca uma carga adicional nele.

Se um wiki é público e os proprietários do site não se importam em compartilhar o conteúdo, eles geralmente fornecem um dump para download (banco de dados ou o que for). Portanto, basta baixar o pacote de dados, configurar uma instância local do mesmo mecanismo wiki, importar os dados para ele e ter uma cópia local. Depois disso, se desejar, você pode fazer sanguessugas localmente.


há -w segundos. por exemplo, -w 5. gnu.org/software/wget/manual/html_node/…
barlop
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.