Używam wget do pobierania zawartości strony, ale wget pobiera pliki jeden po drugim.Pobieranie wget z wieloma jednoczesnymi połączeniami
Jak mogę pobrać wget przy użyciu 4 jednoczesnych połączeń?
Używam wget do pobierania zawartości strony, ale wget pobiera pliki jeden po drugim.Pobieranie wget z wieloma jednoczesnymi połączeniami
Jak mogę pobrać wget przy użyciu 4 jednoczesnych połączeń?
wget nie można pobrać w wielu połączeniach, zamiast tego można spróbować użyć innego programu, takiego jak aria2.
znalazłem (chyba) a solution
W procesie pobierania kilka tysięcy plików dziennika z jednego serwera do następnego nagle miał potrzebę zrobić jakiś poważny wielowątkowe pobieranie w BSD, najlepiej z Wgetem, bo to była najprostsza droga. Mogłem wymyślić, jak sobie z tym poradzić. Trochę rozglądać doprowadziło mnie do ten mały samorodek:
wget -r -np -N [url] & wget -r -np -N [url] & wget -r -np -N [url] & wget -r -np -N [url]
Wystarczy powtórzyć
wget -r -np -N [url]
tak wiele wątków, jak trzeba ... Teraz biorąc pod uwagę to nie jest ładna i nie są z pewnością lepsze sposoby wykonywania to, ale jeśli chcesz coś szybko i brudną powinno załatwić sprawę ...
Uwaga: opcja -N
sprawia, że tylko „nowsze” pliki wget
pobierania, co oznacza, że nie będzie zastąpić lub ponownie pobrać pliki chyba ich sygnatury czasowe zmieniają się na serwerze.
Ale to nie pobiera całego zestawu artefaktów dla każdy proces? –
@KaiMattern: dodaj opcję '-nc':" no clobber "- powoduje, że wget ignoruje pobrane (nawet częściowo) pliki. –
Miałem listę obrazów, które musiałem pobrać, a to działało również dla mnie: 'wget -i list.txt -nc & wget -i list.txt -nc & wget -i list.txt -nc' Bardzo brzydki , ale hej, działa. : P –
try pcurl
http://sourceforge.net/projects/pcurl/
używa curl zamiast wget, pliki do pobrania w 10 segmentach równolegle.
użyć aria2:
aria2c -x 16 [url]
# |
# |
# |
# ----> the number of connections
kocham go !!
Nie widzę, jak to pomaga pobrać stronę internetową - wygląda na to, że pobiera tylko 1 plik. Jeśli to prawda - głosy powinny być -ve. – Stephen
Zgadzam się, to nie jest dobra odpowiedź, ponieważ aria2 nie może robić sieci lub ftp dublowania jak wget czy lftp. lftp wykonuje dublowanie, a także obsługuje wiele połączeń. – Anachronist
wow! aria2 jest niesamowita – Orlo
Sugeruję użycie httrack.
ex: httrack -v -w http://example.com/
Będzie to lustro z 8 jednoczesnych połączeń jako domyślny. Httrack ma mnóstwo opcji do grania. Spójrz.
Nie obsługuje ciasteczek sesyjnych dostarczanych przez użytkownika, między innymi ... –
pliki do pobrania WOLNO i generalnie jest to śmieć – aaa90210
@ aaa90210: Byłoby wspaniale, gdybyś zwięźle wyjaśnił braki w programach. Komentarz ArturaBodery jest znacznie bardziej pouczający. – Richard
Jak wspomniałem już o innych plakatach, sugeruję, aby rzucić okiem na aria2. Ze strony podręcznika Ubuntu dla wersji 1.16.1:
aria2 to narzędzie do pobierania plików. Obsługiwane protokoły to HTTP (S), FTP, BitTorrent i Metalink. aria2 może pobrać plik z wielu źródeł/protokołów i próbuje wykorzystać maksymalną przepustowość pobierania. Obsługuje pobieranie pliku z HTTP (S)/FTP i BitTorrent w tym samym czasie, podczas gdy dane pobierane z HTTP (S)/FTP są przesyłane do roju BitTorrent. Używając sum kontrolnych porcji Metalink, aria2 automatycznie sprawdza fragmenty danych podczas pobierania pliku, takiego jak BitTorrent.
Możesz użyć flagi -x
aby określić maksymalną liczbę połączeń na serwer (domyślnie: 1):
aria2c -x 16 [url]
Jeżeli ten sam plik jest dostępny z wielu miejsc, można wybrać, aby pobrać od wszyscy. Użyj flagi -j
, aby określić maksymalną liczbę równoległych pobrań dla każdego statycznego identyfikatora URI (domyślnie: 5).
aria2c -j 5 [url] [url2]
Wystarczy popatrzeć na http://aria2.sourceforge.net/ uzyskać więcej informacji. W celu uzyskania informacji o użytkowaniu strona podręcznika ma charakter opisowy i zawiera sekcję na dole z przykładami użycia. Wersję online można znaleźć pod adresem http://aria2.sourceforge.net/manual/en/html/README.html.
Nowym (ale jeszcze nie wydanym) narzędziem jest Mget. Posiada już wiele opcji znanych z Wget i posiada bibliotekę, która pozwala na łatwe osadzanie (rekursywne) pobierania do własnej aplikacji.
Aby odpowiedzieć na to pytanie:
mget --num-threads=4 [url]
UPDATE
MGET jest teraz rozwijana jako Wget2 z wielu bugów i innych funkcji (np HTTP/2 support).
--num-threads
jest teraz --max-threads
.
Miłe znalezisko. Dziękuję Ci! – r3x
wszelkie wskazówki dotyczące instalacji wget2 na Macu? Strona tylko dokumentuje, jak zainstalować ją ze źródła i ma problemy z uzyskaniem autopointu – Chris
W skrypcie TravisCI używamy homebrew do instalacji gettext (który zawiera autopunkt). Spójrz na .travis_setup.sh z repozytorium wget2. – rockdaboot
Wget nie obsługuje wielu połączeń z gniazdami w celu przyspieszenia pobierania plików.
Myślę, że możemy zrobić trochę lepiej niż odpowiedź gmariana.
Prawidłowym sposobem jest użycie aria2
.
aria2c -x 16 -s 16 [url]
# | |
# | |
# | |
# ---------> the number of connections here
Aby udokumentować '-x, --max-connection-per-server = NUM Maksymalna liczba połączeń do jednego serwera dla każdego pobrania. Możliwe wartości: 1-16 Domyślnie: 1' i '-s, --split = N Pobierz plik przy użyciu N połączeń. Jeśli podano więcej niż N identyfikatorów URI, pierwsze N URI są używane, a pozostałe adresy URL są używane do tworzenia kopii zapasowych. Jeśli podano mniej niż N identyfikatorów URI, te adresy URL są używane więcej niż jeden raz, więc łączna liczba połączeń N jest generowana jednocześnie . Liczba połączeń z tym samym hostem jest ograniczona przez opcję --max-connection-per-server. Zobacz także opcję --min-split-size. Możliwe wartości: 1- * Domyślnie: 5' – Nick
Dzięki za opracowanie parametrów, Nick. –
Sama opcja -s już nie dzieli pliku z jednego serwera od wersji 1.10. Trzeba użyć --max-connection-per-server razem, aby wymusić ustanowienie wielu połączeń. Zobacz dokumentację aria2: 'Informacje o liczbie połączeń Od wydania 1.10.0, aria2 domyślnie używa 1 połączenia na hosta i ma ograniczenie rozmiaru segmentu o wielkości 20 MBi. . Tak więc niezależnie od wartości określonej za pomocą opcji -s, , używa ona 1 połączenia na hosta. Aby zachowywał się jak 1,9.x, użyj --max-connection-per-server = 4 - min-split-size = 1M. " –
ten program pozwala na nieograniczoną liczbę połączeń, co jest bardzo przydatne w niektórych przypadkach. – uglide
Świetne narzędzie. dla centos6.xi używany http://rpm.pbone.net/index.php3/stat/4/idpl/16390122/dir/redhat_el_6/com/axel-2.4-1.el6.rf.x86_64.rpm.html –
Ponieważ GNU równoległy nie był jeszcze wymienić podam inaczej:
cat url.list | parallel -j 8 wget -O {#}.html {}
To ciekawe podejście. Nie dotyczy to sytuacji, gdy musisz pobrać ogromny plik, a prędkość połączenia jest ograniczona, ale może być przydatna podczas pobierania wielu plików. –
Uruchomienie tego polecenia spowoduje wyświetlenie listy 8 razy, nie? Zrobiłem to w ten sam sposób i zamiast przetwarzać każdą linię za pomocą 8 paraleli, po prostu przetwarza całą listę 8 razy. – DomainsFeatured
Nie, dzieli listę na 8 zadań. –
make
łatwo parallelised (np make -j 4
). Na przykład, oto prosty Makefile
używam do pobierania plików równolegle przy użyciu wget:
BASE=http://www.somewhere.com/path/to
FILES=$(shell awk '{printf "%s.ext\n", $$1}' filelist.txt)
LOG=download.log
all: $(FILES)
echo $(FILES)
%.ext:
wget -N -a $(LOG) $(BASE)/[email protected]
.PHONY: all
default: all
Oni zawsze mówią, że to zależy, ale jeśli chodzi o dublowanie stronę internetową Najlepszym istnieje httrack. Jest super szybki i łatwy w obsłudze. Jedynym minusem jest to, że jest to forum pomocy technicznej, ale możesz znaleźć drogę, korzystając z numeru official documentation. Ma interfejs GUI i CLI i obsługuje pliki cookie po prostu przeczytaj dokumenty. To jest najlepsze.(Be cureful z tego narzędzia można pobrać całą sieć na dysku twardym)
httrack -c8 [url]
Według numeru domyślna maksymalna jednoczesnych połączeń ograniczony do 8 aby uniknąć przeciążenia serwera
Podobna kwestia z ładnym rozwiązania: http://stackoverflow.com/questions/7577615/parallel-wget-in-bash – JohnEye
Spójrz na ten projekt https://github.com/rockdaboot/wget2 – r3x