puf(Parallel URL fetcher)만 찾았지만 파일에서 URL을 읽을 수는 없었습니다. 같은 것
puf < urls.txt
작동하지 않습니다.
서버에 설치된 운영 체제는 Ubuntu입니다.
답변1
사용GNU 병렬,
$ 병렬 -j${작업}wget <urls.txt
또는 xargs
에서GNU Findutils,
$ xargs -n 1 -P${작업}wget <urls.txt
동시에 실행하도록 허용할 ${jobs}
최대 개수는 어디에 있습니까( 에서 한 줄에 하나의 호출을 가져오도록 설정 ). /가 없으면 CPU 코어만큼 한 번에 많은 작업을 실행하며(네트워크 IO에 의한 바인딩에는 반드시 의미가 없음 ) 한 번에 하나씩 실행됩니다.wget
-n
1
wget
urls.txt
-j
-P
parallel
wget
xargs
한 가지 좋은 기능은 parallel
동시에 xargs
실행되는 작업의 출력을 분리하여 유지하는 것이지만, 신경 쓰지 않는다면 xargs
사전 설치될 가능성이 더 높습니다.
답변2
답변3
Python과 pycurl 라이브러리를 사용하여 이를 구현할 수 있습니다. pycurl 라이브러리에는 여러 개의 동시 연결을 가능하게 하는 자체 짝수 루프를 구현하는 "다중" 인터페이스가 있습니다.
그러나 인터페이스는 C와 유사하므로 다른 "파이썬" 코드에 비해 약간 번거롭습니다.
나는 그 위에 보다 완전한 브라우저와 유사한 클라이언트를 구축하는 래퍼를 작성했습니다. 이를 예로 사용할 수 있습니다. 참조파이코피아.WWW.클라이언트기준 치수. HTTPConnectionManager는 다중 인터페이스를 래핑합니다.
답변4
GNU Parallel 매뉴얼 페이지의 일부에는 병렬 재귀 wget의 예가 포함되어 있습니다.
https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer
HTML은 두 번 다운로드됩니다. 한 번은 링크를 추출하고 한 번은 디스크에 다운로드합니다. 다른 콘텐츠는 한 번만 다운로드됩니다.
재귀성이 필요하지 않다면 ephemient의 대답이 분명해 보입니다.