« Return to Thread: Python como wget

Re: Python como wget

by Luciano Ramalho :: Rate this Message:

Reply to Author | View in Thread

2009/2/2 Henrique Baggio <hnrqbaggio@...>:
> Procurei um pouco na net sobre alternativas de fazer esse download em
> python, mas não consegui encontrar muita coisa útil. Tentei usar o módulo
> urllib, mas não consegui fazê-lo entender a url como um diretório, de forma
> a listar os arquivos dentro dele.

Oi, Henrique, não existe como "entender a url como um diretório" no
protocolo HTTP. Existe no FTP, mas no HTTP não existe um comando que
você possa enviar para o servidor dizer tudo o que tem num diretório.

> Apenas consegui baixar o conteúdo da
> página html usada pelo servidor para me mostrar a lista de arquivos.

Sim, se você enviar um GET para uma determinada URL, o servidor pode
te devolver uma listagem de arquivos. Mas isso depende de como o
servidor foi configurado. Não existe nenhuma obrigação, segundo o
protocolo HTTP, de que isso seja desta maneira.

> Claro que eu poderia fazer uma gambiarra e procurar os links dos arquivos
> pelo conteúdo do html

É assim exatamente que funciona o Wget recursivo.

> , mas gostaria de saber se existe alguma outra
> alternativa, se a linguagem me permite algo mais alto nível. =]

> Alguma idéia?
>
> [1] http://linux.die.net/man/1/wget

Procure o wget para Windows (já te deram o link), ou faça um script
combinando urllib com alguma biblioteca mencionada neste excelente
post do über-guru Ian Bicking:

http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/

Se for criar sua própria solução, talvez seja legal dar uma lida na
especificação do HTTP, para sacar o que é possível esperar do
protocolo. A parte que fala dos métodos (comandos) fica aqui:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

Boa sorte!

[ ]s
Luciano

 « Return to Thread: Python como wget