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 --rejectopção do wget para não salvar todos os arquivos. No entanto, o wget ainda fará o download de todos os arquivos e o removerá depois, se 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 curinga do shell? Se o wget não pode fazer isso, existe algum outro comando linux comum que pode fazer isso?


3
Poste seu comando inteiro, por favor. Isso facilita muito a solução de problemas.
31413 Joseph Kern

Respostas:


9

Você também pode tentar o HTTrack, que tem, na IMO, 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 https://example.com/images/ *
  3. Mas exclua qualquer coisa que termine em swf

Ele faria o download de CSS, imagens etc. com URLs atualizados?
Brandizzi

6

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


1

Sob a seção --reject do 'man wget':

"Observe que se algum dos caracteres curinga, *,?, [Ou] aparecer em um elemento de acclist ou rejlist, será tratado como um padrão, e não como um sufixo".

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

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

Mesmo se o seu sistema não possuir 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.

As opções --reject estão entre aspas. Percebo que estão correspondendo aos arquivos corretos porque, após o download do arquivo, o wget remove o arquivo. Eu só quero impedi-lo de baixar o arquivo em primeiro lugar
Rory

São esses arquivos htm (l)? De acordo com o manual, eles são baixados, não importa o quê.
Kyle Brandt

Sim. os arquivos que eu quero rejeitar são arquivos HTML. Eu sei que eles são baixados, não importa o quê. Existe alguma maneira de evitar isso?
Rory

1

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

Um nível "2" baixa index.html, seus subsites / imagens / etc e os links no subsite.


não que não ajuda neste caso
Rory

1

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

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

esse comando ignorará os arquivos gif, jpg e swf.


Os arquivos que Rory McCann deseja rejeitar são arquivos HTML, mas ele deseja manter outros arquivos HTML, para que essa sintaxe não se aplique à sua pergunta.
Royce Williams

1

Uma solução alternativa seria executar o wget através de um servidor proxy. Defina seu proxy para não permitir certos padrões. Isso impediria o wget de baixá-los em primeiro lugar.

O wget fará o download e removerá um arquivo que corresponda ao padrão -R. também pode corresponder a padrões, não apenas extensões ou partes de nomes de arquivos. No entanto, não impede o wget de baixar primeiro e excluir depois.

O httrack possui 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 encontrar o index.asp? Type = BASIC & PAGEID = 2234234,
ele poderá salvá-lo, mas você deve dizer para preservar o arquivo partes da consulta,
por exemplo,% h% p /% n% [TYPE: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
@ é um espaço reservado para um ponto de interrogação, você pode renomear os arquivos posteriormente, ou talvez escapar de um ponto de interrogação? O problema é que o.% t adicionará um '.html' ao final do seu URI que originalmente não tinha um '.html'. E se você o remover, as imagens que o httrack baixar não terão uma extensão de arquivo.

Melhor usar o wget IMHO

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.