Puxar lista de arquivos terminados em .csv.gz para download

0

Como posso ir a um site (que requer um nome de usuário e senha) e puxar o link completo do site de todos os arquivos que terminam em .csv.gz em um arquivo .txt (uma linha cada). Não quero extrair dados de subpastas.

Por exemplo, eu gostaria que o seguinte salvasse em meu.txt

http://www.google.com/1.csv.gz
http://www.google.com/xyz.csv.gz

Mas não deve salvar

http://www.google.com/extra/abc.csv.gz
    
por Teddy291 23.06.2015 / 02:31

2 respostas

4

Com o protocolo HTTP, ao contrário do FTP e de alguns outros protocolos, não existe uma lista de todos os arquivos. Se você quiser buscar ( GET ) um arquivo, você deve saber seu URL.

Muitos servidores da Web fornecem um recurso de conveniência (geralmente chamado de índice automático) que, para um URL http://site/directory/ , gera uma página HTML contendo uma lista de links para URLs do formulário http://site/directory/file para cada file existente diretório no servidor, fornecendo assim uma espécie de pseudo lista de arquivos que os clientes podem descobrir. No entanto, esse recurso quase nunca é usado para o diretório de nível superior de um site ( http://site/ ) porque o autor do site geralmente fornecerá uma página HTML explícita para o URL de nível superior do site. Portanto, se http://www.google.com/1.csv.gz existir, geralmente você não será capaz de descobrir a menos que você saiba com antecedência que está lá.

Se você está lidando com um servidor web que oferece um índice de arquivos, você pode facilmente inserir essa lista de HTML em texto com algum processamento de texto com awk ou sed mas dependerá do formato exato em que o servidor web específico está retornando sua lista HTML ...

curl http://site/ | sed -e [....]
    
por 23.06.2015 / 04:02
0

Eu assumo que todos os arquivos que você quer estão listados na página de índice da web local. Nesse caso, você pode usar um navegador de texto como lynx para despejar a lista de URLs encontrados nessa página, depois com sed extrair os que você deseja. Por exemplo:

lynx -auth=ID:PASSWD -dump http://www.google.com |
sed '1,/^References/d
    \:www\.google\.com/[^/]*\.csv\.gz$:!d
    s/^ *[^ ]* //
' >my.txt

O sed exclui (d) todas as linhas até a lista de Referências (ou seja, links url) no fim. Em seguida, exclui as linhas que não correspondem ao seu padrão ( \: introduz um novo delimitador de padrão : em vez de / , para que possamos usar / no padrão sem esacping it). [^/]* corresponde a todos os caracteres, exceto / . $ é o fim da linha. Isso então remove os usos de numeração de lince para os URLs.

    
por 23.06.2015 / 09:23

Tags