Existe wget paralelo? Algo como fping, mas apenas para download?

Existe wget paralelo? Algo como fping, mas apenas para download?

Encontrei apenas puf (buscador de URL paralelo), mas não consegui ler URLs de um arquivo; algo como

 puf < urls.txt

também não funciona.

O sistema operacional instalado no servidor é o Ubuntu.

Responder1

UsandoParalelo GNU,

$ paralelo -j${empregos}wget <urls.txt

ou xargsdeGNU Findutils,

$ xargs -n 1 -P${empregos}wget <urls.txt

onde ${jobs}é o número máximo que wgetvocê deseja permitir a execução simultânea (definindo -npara 1obter uma wgetinvocação por linha em urls.txt). Sem -j/ -P, parallelexecutará tantos trabalhos por vez quanto os núcleos da CPU (o que não necessariamente faz sentido para o wgetlimite de E/S da rede) e xargsexecutará um de cada vez.

Um recurso interessante que parallelacabou xargsé manter separada a saída dos trabalhos em execução simultânea, mas se você não se importa com isso, xargsé mais provável que esteja pré-instalado.

Responder2

Responder3

Você pode implementar isso usando Python e a biblioteca pycurl. A biblioteca pycurl possui a interface "multi" que implementa seu próprio loop uniforme que permite múltiplas conexões simultâneas.

No entanto, a interface é bastante semelhante a C e, portanto, um pouco complicada em comparação com outros códigos mais "Pythônicos".

Eu escrevi um wrapper para ele que cria um cliente mais completo, semelhante a um navegador, sobre ele. Você pode usar isso como exemplo. Veja opycopia.WWW.clientmódulo. O HTTPConnectionManager envolve a multiinterface.

Responder4

Parte da página de manual do GNU Parallel contém um exemplo de wget recursivo paralelo.

https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer

O HTML é baixado duas vezes: uma vez para extrair links e outra para baixar para o disco. Outros conteúdos são baixados apenas uma vez.

Se você não precisa da recursividade, a resposta do efemiente parece óbvia.

informação relacionada