O wget possui uma opção -np
que desativa a obtenção de arquivos de qualquer diretório pai. Eu preciso de algo semelhante, mas um pouco mais flexível. Considerar:
www.foo.com/bar1/bar2/bar3/index.html
Eu gostaria de obter tudo, mas não "mais alto" (na hierarquia da árvore) que bar2
(!). Portanto bar2
, também deve ser buscado, mas não bar1
.
Existe uma maneira de tornar o wget mais seletivo?
Antecedentes: estou tentando espelhar um site, com uma estrutura lógica semelhante - ponto de partida, depois para cima e para baixo. Se houver outra ferramenta wget
mais adequada para esse layout, informe-me também.
Atualizar
Ou, em vez de especificar uma possível profundidade, talvez algo como "sem pais, a menos que correspondam a esse ou aquele URL".
Atualização 2
Existe alguma estrutura no servidor, certo? Você pode visualizá-lo como uma árvore. Então normalmente com "--no-parent" você começa a partir de algum ponto A e desce apenas.
Meu desejo é a capacidade de subir - expressa por dizer: é permitido subir nós X, ou (o que é 100% equivalente) que seja permitido subir no nó B (onde a distância BA = X).
Em todos os casos, as regras para diminuir permanecem como foram definidas pelos usuários (por exemplo - diminuem apenas pelos níveis Y).
Como guardar? Na verdade, não é realmente a questão - wget
por padrão, recria a estrutura do servidor, não há nada a temer aqui ou não há necessidade de consertar nada. Então, em 2 palavras - como sempre.
Atualização 3
Estrutura de diretório abaixo - vamos assumir que em cada diretório existe apenas um arquivo, em R - R.html e assim por diante. Isso é simplificado, é claro, porque você pode ter mais de uma página.
R
/ \
B G
/ \
C F
/ \
A D
/
E
A (A.html) é meu ponto de partida, X = 2 (então B é o nó de nível superior que eu gostaria de buscar). Neste exemplo em particular, isso significa buscar todas as páginas, exceto R.html e G.html. A.html é chamado "ponto de partida" porque eu tenho que começar com ele, não com B.
Atualização 4
A nomeação é usada na Atualização 3.
wget OPTIONS www.foo.com/B/C/A/A.html
A questão é quais são as opções para obter todas as páginas do diretório B e abaixo (sabendo que é necessário iniciar a partir do A.html).
bar2
buscar, mas nãobar1
? Ondebar2
vai morar? E se dois ou mais diretórios que você não deseja possuem subdirets com nome idêntico, o conteúdo deles deve ser mesclado? É quase certamente mais fácil obter todo o maldito site e depois podar / mover as coisas como você deseja.bar2
diretório e todo o seu conteúdo. Caso contrário, esclareça.Respostas:
Eu não tentei, mas usar -I e -X pode dar o que você deseja. Minhas primeiras tentativas seriam na linha de
Explicação das opções:
fonte
Você precisa adicionar um final / ao URL, caso contrário não conseguirá o que deseja.
Se você deseja obter todo o conteúdo em www.myhostname.com/somedirectory , a sintaxe deve ser como:
Experimente sem o fim / e veja o que acontece. Em seguida, tente com o /.
fonte
Eu acho que a resposta certa aqui é a
--no-parent
opção:fonte
Talvez esteja faltando alguma coisa, mas se é isso que você quer, então
funciona para mim (usando o seu exemplo). Obviamente, com essas opções, você também terá toda a estrutura de diretórios acima, de
www.foo.com
baixo para cima. Se você quer apenasbar2
no nível superior, faça-nH
se livrar dowww.foo.com
, e--cut-dirs=1
se livrarbar1
, para que você obtenhabar2
e seus subdiretórios baixados no diretório atual. Para mais informações, consulteman wget
, que é bastante legível e tem exemplos.fonte
np
), mas estou procurando uma solução geral, quando o nível de topo está acima do ponto de partida.B
(como no seu exemplo), mas simA
? Se sim, por quê? Isso ocorre porque você deseja automatizar algum script ou por algum outro motivo? Também não tenho certeza do que você quer dizer com X = 2. Isso significa nível 2? Se você está tentando buscar diretórios ainda mais para baixo na árvore, eu não sei como você distinguirB
entreG
.