wget - Como faço para baixar páginas da web com base no padrão de URL?

1

Considere um site www.music.com com a seguinte estrutura de diretório:

/piano
   /covers
     /Chopin 
        apple.html
        bannan.js
        balloon.html
        index.html
     /Franz Liszt
        index.html
        roses.js
        Love Dream.html

     /Frodo
        index.html
        linkenso.html

/violin
   /covers
      /David
         Viva.html
      /Ross
         index.html

Eu só quero obter os arquivos index.html do diretório aninhado em music.com/piano/covers, onde o nome do subdirecório começa com "Fr". No exemplo acima, eu só quero baixar 2 arquivos:

  • www.music.com/piano/covers/Franz Listz / index.html
  • www.music.com/piano/covers/Frodo/index.html

Usando o wget, pensei em usar o seguinte:

$ wget 
   --mirror 
   --header="Accept: text/html"  
   --page-requisites 
   --html-extension 
   --convert-links 
   --restrict-file-names=windows 
   --domains=www.music.com/piano/covers 
   --accept-regex=/piano/covers/Fr.*/index.html  
        http://www.music.com

Eu executei o mesmo no meu próprio site, mas só recebo um arquivo incorreto:

www.music.com/index.html

Por que eu usei as opções acima?

  1. Usar --recursive ou -r não é o problema, pois o erro ainda persiste. Além disso, a opção --page-requisites é muito melhor alternativa como eu não estou exigindo cada peça de informação de o servidor.
  2. --domains : garante que nada fora do URL especificado é baixado. Este deve ser o caso, pois não preciso qualquer recurso fora da pasta piano/covers
  3. --header : Desejo substituir o Accept: * / * para evitar que meu pedido exija tudo
  4. --html-extensions : Baixe apenas arquivos html

Parece que a parte --accept-regex nem sequer é considerada por algum motivo. Mas é recomendado sobre a opção -A , pois os arquivos de que preciso são distribuídos em diretórios diferentes. Alguma idéia de como posso obter os 2 arquivos conforme especificado pelo argumento --accept-regex ?

EDIT 1:

Acessar o URL usado no exemplo acima gera um erro 404. Então vou dar contexto ao meu site que estou realmente tentando realizar esta operação

De www.ajayhalthor.com, com a estrutura de diretórios:

/piano
   /nightwish-sahara
   /nightwish-amaranth
   /skillet-hero
   /skillet-the-last-night
   /breaking-benjamin-diary-of-jane
   /skillet-comatose
   /one-republic-counting-stars
   /skillet-falling-inside-the-black
   /63/index.html
   /a/few/more/links/index.html

/about
   /other/links/index.html
/Home
   /main/links/index.html

A partir dessa estrutura, quero recuperar os arquivos em www.ajayhalthor.com/piano que começam com "Sk". Espero recuperar os seguintes arquivos:

  • www.ajayhalthor.com/piano/skillet-hero
  • www.ajayhalthor.com/piano/skillet-the-last-night
  • www.ajayhalthor.com/piano/skillet-comatose
  • www.ajayhalthor.com/piano/skillet-falling-inside-the-black

Executando o seguinte comando:

$ wget 
   --mirror 
   --header="Accept: text/html"  
   --page-requisites 
   --html-extension 
   --convert-links 
   --restrict-file-names=windows 
   --domains=www.ajayhalthor.com/piano
   --accept-regex="piano/sk.*"
        http://www.ajayhalthor.com

Eu recebo a seguinte saída:

Resolving www.ajayhalthor.com (www.ajayhalthor.com)... 23.229.213.7
Connecting to www.ajayhalthor.com (www.ajayhalthor.com)|23.229.213.7|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘www.ajayhalthor.com/index.html’

www.ajayhalthor.com/index.html              [ <=>                                                                          ]  24.28K  --.-KB/s    in 0.1s    

Last-modified header missing -- time-stamps turned off.
2017-01-19 01:56:11 (245 KB/s) - ‘www.ajayhalthor.com/index.html’ saved [24862]

FINISHED --2017-01-19 01:56:11--
Total wall clock time: 1.4s
Downloaded: 1 files, 24K in 0.1s (245 KB/s)
Converting links in www.ajayhalthor.com/index.html... 11-1
Converted links in 1 files in 0.003 seconds.

Apenas 1 arquivo www.ajayhalthor.com/index.html é baixado.Estou usando --accept-regex corretamente?

    
por Ajay H 18.01.2017 / 20:07

0 respostas

Tags