wget download recursivo, mas não quero seguir todos os links

10

Estou tentando espelhar um site usando o wget, mas não quero baixar muitos arquivos, por isso estou usando a opção --reject do wget para não salvar todos os arquivos. No entanto, o wget ainda baixará todos os arquivos e, em seguida, removerá o arquivo posteriormente se ele corresponder à minha opção de rejeição.

Existe alguma maneira de dizer ao wget para não seguir certos links se eles corresponderem a algum caractere curinga? Se o wget não puder fazer isso, existe algum outro comando comum do Linux que possa fazer isso?

    
por Rory 13.10.2009 / 12:26

6 respostas

6

Parece que isso não é possível no wget

    
por 14.01.2010 / 17:53
9

Você também pode tentar o HTTrack , que tem uma lógica de inclusão / exclusão mais flexível e intuitiva. Algo assim ...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

As regras serão aplicadas em ordem e substituirão as regras anteriores ...

  1. Excluir tudo
  2. Mas inclua o link *
  3. Mas exclua tudo que termine em swf
por 13.10.2009 / 22:11
1

Na seção --reject do 'man wget':

"Note que se qualquer um dos caracteres curinga, *,?, [ou], aparecer em um elemento de acclist ou rejlist, será tratado como um padrão, em vez de um sufixo."

Se você está fazendo isso, você pode querer dar exemplos dos padrões que você está usando e o que você acha que deve combinar, e isso não acontece. Você diz que eles estão combinando, mas tem certeza?

Além disso, certifique-se de colocar essa lista entre aspas, para que o shell não expanda esses curingas antes de passar o (s) argumento (s) para wget.

Mesmo que o seu sistema não tenha a versão 1.12, leia a seção Tipos de Arquivos do manual aqui . De acordo com o log de alterações, o mantenedor adicionou algumas advertências:

* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.
    
por 13.10.2009 / 13:36
1

Você pode restringir o nível de recursão com a opção -l NUMBER , se isso ajudar (não seguir um determinado padrão de expressão regular).

Um nível de "2" faz o download index.html, seus subsites / images / etc e os links no subsite.

    
por 13.10.2009 / 19:13
1

como você usa o wget? tente usá-lo desta maneira:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

este comando irá ignorar arquivos gif e jpg e swf.

    
por 04.01.2012 / 21:20
1

Uma solução alternativa seria executar o wget por meio de um servidor proxy. Defina seu proxy para não permitir certos padrões. Isso bloquearia o wget de sempre baixá-los em primeiro lugar.

O wget irá baixar e remover um arquivo que corresponda ao padrão -R. Ele pode combinar padrões também, não apenas extensões ou partes de nomes de arquivos. No entanto, isso não impede que você baixe primeiro e exclua mais tarde.

O httrack tem alguns recursos interessantes, mas, na minha experiência, a maneira como ele salva um "arquivo" pode ser um pouco peculiar por exemplo. se o httrack se deparar com index.asp? Tipo = BASIC & PAGEID = 2234234
ele pode salvá-lo, mas é necessário avisá-lo para preservar as partes da consulta
por exemplo. % h% p /% n% [TIPO: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
o @ é um espaço reservado para um ponto de interrogação, você pode renomear os arquivos mais tarde, ou talvez escapar de um ponto de interrogação em vez disso? O problema é que o.% t adicionará um '.html' ao final do seu URI que originalmente não tinha '.html' E se você tirá-lo, as imagens que o httrack downloads não terão extensão de arquivo.

Melhor usar wget IMHO

    
por 26.09.2012 / 14:04