wget recursivo com arquivos sem extensão

2

Estou tentando obter um site com wget . O problema é que:

  1. Tenha um nome amigável para as páginas

    http://domain/wiki/Section/Home, 
    http://domain/wiki/Section/Not+Home
    http://domain/wiki/Section/Other+page
    
  2. Para algumas páginas, usa strings de consulta:

    http://domain/wiki/Section/Home?one=value&other=value
    
  3. e, por alguma razão, talvez faça backup de alguns arquivos com uma extensão .1 (número de 1 - n), por exemplo styles.css.1 , javascrip.js.2

Eu quero fazer um download recursivo e armazená-lo em uma pasta, mas evitar os arquivos com consultas; Home?query - neste caso, Home . Para isso eu tentei --reject com um padrão, mas não consigo fazer isso funcionar.

Eu posso evitar a extensão .1,.2,... .n se eu adicionar uma longa lista de números, mas espero que haja uma maneira melhor.

Este é o wget :

wget \
--page-requisites \
--no-parent \
--no-host-directories \
--no-directories \
--convert-links \
--load-cookies wget_cookies.txt --cookies=on --keep-session-cookies \
-P WikiFolders/pages/ \
-e robots=off \
-r \
--reject='1,2,3,4,5,6,7,8,9,*\?*' \
--content-disposition \
--no-check-certificate \
http://domain/wiki/Section/

Se eu executar desta forma, eu obtenho o site, mas é muito lento para algum conteúdo.

Observação: para evitar arquivos com consultas, tentei *\?* , mas isso não funciona.

Depois de fazer o download, removo o conteúdo com:

find WikiFolders/pages/ -iname "*\?*" -delete

mas, novamente, isso é muito lento e eu tenho que baixar muito conteúdo.

Eu pensei em primeiro excluir o HTML e baixar imagens, CSS e js e com outro wget o HTML, mas desde que os arquivos não têm extensão isso não funciona.

    
por cesaregb 21.05.2013 / 21:24

2 respostas

2

Você pode usar a notação [] para especificar intervalos de números e letras. Repita para vários.

*[0-9],*[0-9][0-9],*[0-9][0-9][0-9]
|____||__________||_______________|
   |       |              |
   |       |              +---------- Reject ending with 000 to 999
   |       +------------------------- Reject ending with 00 to 99
   +--------------------------------- Reject ending with 0 to 9

Isso também pode ser usado com --accept .

Para os links de consulta, não há como filtrá-lo, no entanto, se você especificar *\?* os arquivos serão excluídos após terem sido baixados. Então você teria que conviver com isso usando largura de banda e tempo para fazer o download, mas você não precisa fazer uma limpeza depois.

Então, summa summarum, talvez algo assim:

--reject='*.[0-9],*.[0-9][0-9],*\?*'

Se isso não for suficiente, você terá que procurar outras ferramentas como a mencionada no link possível duplicado em sua pergunta.

    
por 22.05.2013 / 00:37
0

Você pode evitar o download dos links de consulta com a opção --reject-regex "(.*)\?(.*)" , conforme explicado em Usando o wget, mas ignorando os parâmetros do URL - Stack Overflow

    
por 24.04.2017 / 01:12