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

7

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/

Recebo muitos arquivos porque 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
Lutador de gravata
fonte
Não há necessidade de pós cruzamento entre superusuário e serverfault superuser.com/questions/158318/...
Bryan
Onde eu deveria ter postado?
Tie-fighter

Respostas:

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

Lembre-se de 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
Skippy le Grand Gourou
fonte
2
A regex no wget não está ancorada no começo ou no fim, portanto, no seu primeiro exemplo wget --reject-regex '\?' http://example.comé suficiente.
Stéphane Gourichon
4

A documentação para o wget diz:

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 É esperado que uma versão futura do Wget forneça uma opção para permitir a correspondência com as cadeias de consulta.

Parece que essa funcionalidade está na mesa há algum tempo e nada foi feito com ela.

Eu não o usei, mas o httrack parece ter um conjunto de recursos de filtragem mais robusto que o wget e pode ser mais adequado ao que você está procurando (leia sobre filtros aqui http://www.httrack.com/html /fcguide.html ).

Evan Anderson
fonte
+1 por me indicar o httrack. Parece melhor do que o wget, e o wget está parecendo estagnado.
Stefan Lasiewski
Eu tentei o Winhttrack, mas ele se comporta de maneira engraçada. Ele baixa arquivos e atravessa diretórios não deve: /
Tie-lutador
Talvez um dia o wget seja consertado. Por enquanto, httrack e pavuk parecem bons.
joeytwiddle
3

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

user3133076
fonte
1

Pavuk deve ser capaz de fazê-lo:

http://pavuk.sourceforge.net/man.html#sect39

Exemplo do Mediawiki:

[...]

-skip_url_pattern ' oldid = , action = edição , action = história , diff = , limite = , [/ =] Usuário: , [/ =] User_talk: , [^ p] / Especial: , = especial: [^ R] , .php / especial: [^ LUA] [^ onl] [^ nul] , MediaWiki: , Pesquisar: , Help: '

[...]

Lutador de gravata
fonte
1

Parece que você está tentando evitar o download de páginas especiais do MediaWiki. Resolvi esse problema uma vez evitando a index.phppágina:

wget  -R '*index.php*'  -r ... <wiki link>

No entanto, o wiki usou o URLS como visto na Wikipedia ( http://<wiki>/en/Theme) e não o padrão que vi em outros lugares ( http://<wiki>/index.php?title=Theme). Como o link que você forneceu usa URLs no padrão Wikipedia, acho que essa solução também pode funcionar para você.

brandizzi
fonte
0

'-R rejlist --reject rejlist' Especifique listas separadas por vírgula de sufixos ou padrões de nomes de arquivos para aceitar ou rejeitar (consulte Tipos de arquivos). Observe que, se algum dos caracteres curinga, '*', '?', '[' Ou ']' aparecer em um elemento de acclist ou rejlist, ele será tratado como um padrão, e não como um sufixo.

Os padrões são provavelmente o que você deseja. Não tenho certeza de quão sofisticados são os padrões, mas você pode tentar aceitar apenas determinados arquivos ou bloquear:

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

Aceitar:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif -A [a-zA-Z.] http://www.boinc-wiki.info/

Edit: nvm à luz do outro post.

Joshua Enfield
fonte
Isso funciona em cadeias de consulta? Toda versão do wget que eu usei aplica apenas padrões de lista de rejeição à parte do arquivo da URL. Vou tentar e ver.
Evan Anderson
Eu não testei. Eu apenas procurei a documentação. Eu achei que ele usa a convenção de shell, mas sua experiência falaria mais do que a minha em relação à função de trabalho da correspondência.
Joshua Enfield
Escapando do "?" não parece que o wget faça o que o OP gostaria na minha caixa do CentOS 5.3 executando o wget 1.11.4.
Evan Anderson