나는 puf (Parallel URL fetcher) 만 찾았지만 파일에서 URL을 읽을 수 없었습니다. 같은
puf < urls.txt
작동하지 않습니다.
서버에 설치된 운영 체제는 Ubuntu입니다.
나는 puf (Parallel URL fetcher) 만 찾았지만 파일에서 URL을 읽을 수 없었습니다. 같은
puf < urls.txt
작동하지 않습니다.
서버에 설치된 운영 체제는 Ubuntu입니다.
답변:
사용 GNU는 병렬 ,
$ parallel -j $ {jobs} wget <urls.txt
또는 xargs
에서 GNU findutils의 ,
$ xargs -n 1 -P $ {jobs} wget <urls.txt
여기서 ${jobs}
의 최대 번호 wget
는 동시에 실행할 수있게하려면 (설정 -n
을 1
하나 얻을 wget
줄에 호출에를 urls.txt
). 없이 -j
/ -P
, parallel
(위해 반드시 이해가되지 않습니다 CPU 코어로 한 번에 여러 작업으로 실행됩니다 wget
네트워크 IO 구속)하고, xargs
한 번에 하나씩 실행됩니다.
하나 개의 좋은 기능 parallel
을 통해 한 xargs
동시에 실행되는 작업의 출력을 유지하고 분리,하지만 당신은 그것에 대해 걱정하지 않는 경우, xargs
사전 설치 될 가능성이 높습니다.
jobs
경로 지연 시간, 경로 대역폭, 원격 서버 정책 등 : 여러 가지 요인에 따라 달라집니다
aria2가이 작업을 수행합니다.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
예 : aria2c http://example.org/mylinux.iso
파이썬과 pycurl 라이브러리를 사용하여 구현할 수 있습니다. pycurl 라이브러리에는 다중 동시 연결을 가능하게하는 자체 짝수 루프를 구현하는 "멀티"인터페이스가 있습니다.
그러나 인터페이스는 다소 C 형이므로 다른 "Pythonic"코드와 비교하면 다소 번거 롭습니다.
더 완벽한 브라우저와 유사한 클라이언트를 구축하는 래퍼를 작성했습니다. 이를 예로 사용할 수 있습니다. pycopia.WWW.client 모듈을 참조하십시오 . HTTPConnectionManager는 멀티 인터페이스를 래핑합니다.
GNU Parallel 매뉴얼 페이지의 일부에는 병렬 재귀 wget의 예가 들어 있습니다.
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
HTML은 두 번 다운로드됩니다. 링크를 추출하기 위해 한 번, 디스크로 다운로드하기 위해 한 번입니다. 다른 컨텐츠는 한 번만 다운로드됩니다.
재귀가 필요하지 않으면 ephemient의 대답은 분명해 보입니다.
Paralell 다운로드의 희생자들은 즐겁지 않습니다. 그들은 하나의 연결이 각 클라이언트에 서비스를 제공 할 것으로 기대합니다. 여러 연결을 설정하면 전체적으로 클라이언트가 줄어 듭니다. (즉, 이것은 무례한 행동으로 간주됩니다).