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

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

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


+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


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: '

[...]


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


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.


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