Jak użyć Wget, aby pobrać wszystkie obrazy do jednego folderu z adresu URL?

133

Używam wget do pobierania wszystkich obrazów ze strony internetowej i działa dobrze, ale przechowuje oryginalną hierarchię witryny ze wszystkimi podfolderami, więc obrazy są rozrzucone. Czy istnieje sposób, aby po prostu pobrać wszystkie obrazy do jednego folderu? Składnia, której obecnie używam, to:

wget -r -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
geoffs3310
źródło

Odpowiedzi:

194

Spróbuj tego:

wget -nd -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.somedomain.com

Oto więcej informacji:

-ndzapobiega tworzeniu hierarchii katalogów (tj. żadnych katalogów ).

-rumożliwia pobieranie rekurencyjne. Aby uzyskać więcej informacji, zobacz Pobieranie cykliczne .

-P ustawia przedrostek katalogu, w którym zapisywane są wszystkie pliki i katalogi.

-Austawia białą listę do pobierania tylko niektórych typów plików. Ciągi i wzorce są akceptowane, a oba mogą być używane na liście oddzielonej przecinkami (jak widać powyżej). Aby uzyskać więcej informacji, zobacz Typy plików .

Jon
źródło
5
To właściwie nie zadziałało dla mnie. Moja zapisana lokalizacja to „.” i skopiował tam całą hierarchię witryny.
Buttle Butkus
2
@ButtleButkus Wygląda na to, że z -Aopcją accept potrzebujesz trochę więcej bałaganu , zobacz dokumentację Wget na temat typów plików . Ponadto, jeśli pobierasz do bieżącego katalogu, możesz usunąć -Popcję prefiksu katalogu . Jeśli pobierasz jeden typ pliku, na przykład tylko pliki jpg, użyj czegoś takiego jak wget -r -A.jpg http://www.domain.com. Spójrz na zaawansowane przykłady, które dostarcza dokumentacja Wget.
Jon
Dodanie -nd do powyższego sprawia, że ​​działa. Możesz również określić wiele flag -A, na przykład-A "*foo*" -A "*bar*"
Yablargo
1
Nie zapomnij użyć --level=influb, --level=9999999999ponieważ wgetmoże sabotować zadanie z powodu domyślnego maksymalnego poziomu głębokości rekurencji 5.
user619271
127
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co
  • -nd: brak katalogów (zapisz wszystkie pliki w bieżącym katalogu; -P directoryzmienia katalog docelowy)
  • -r -l 2: rekurencyjny poziom 2
  • -A: akceptowane rozszerzenia
wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2}
  • -H: span hosts (domyślnie wget nie pobiera plików z różnych domen lub subdomen)
  • -p: wymagania dotyczące strony (obejmuje zasoby, takie jak obrazy na każdej stronie)
  • -e robots=off: wykonuje polecenie robotos=offtak, jakby było częścią .wgetrcpliku. Spowoduje to wyłączenie wykluczania robotów, co oznacza, że ​​ignorujesz plik robots.txt i metatagi robotów (powinieneś znać konsekwencje tego faktu, uważaj).

Przykład: pobierz wszystkie .jpgpliki z przykładowego wykazu katalogów:

$ wget -nd -r -l 1 -A jpg http://example.com/listing/
Lri
źródło
9

Spróbuj tego:

wget -nd -r -P /save/location/ -A jpeg,jpg,bmp,gif,png http://www.domain.com

i poczekaj, aż usunie wszystkie dodatkowe informacje

orezvani
źródło
To nie działa dla mnie. wget -nd -r -P /Users/duraiamuthan/Downloads/images/ -A jpeg,jpg,bmp,gif,png http://www.forbes.com/profile/mark-zuckerberg/
Vivo
5

Zgodnie ze stroną podręcznika, flaga -P to:

-P prefix --directory-prefix = prefix Ustawia przedrostek katalogu na prefiks. Prefiks katalogu to katalog, w którym będą zapisywane wszystkie inne pliki i podkatalogi, tj. Na górze drzewa pobierania. Wartość domyślna to. (bieżący katalog).

Oznacza to, że określa tylko miejsce docelowe, ale gdzie ma zostać zapisane drzewo katalogów. Nie spłaszcza drzewa do jednego katalogu . Jak wspomniano wcześniej, flaga -nd faktycznie to robi.

@Jon w przyszłości dobrze byłoby opisać, co robi flaga, abyśmy zrozumieli, jak coś działa.

Michael Yagudaev
źródło
2

Proponowane rozwiązania są idealne do pobierania obrazów i czy wystarczy zapisanie wszystkich plików w katalogu, którego używasz. Ale jeśli chcesz zapisać wszystkie obrazy w określonym katalogu bez odtwarzania całego hierarchicznego drzewa witryny, spróbuj dodać „cut-dirs” do wiersza zaproponowanego przez Jona.

wget -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.boia.de --cut-dirs=1 --cut-dirs=2 --cut-dirs=3

w tym przypadku cut-dirs uniemożliwi wget tworzenie podkatalogów do 3 poziomu w hierarchicznym drzewie serwisu, zapisując wszystkie pliki w określonym katalogu. Możesz dodać więcej „cut-dirs” z wyższymi numerami, jeśli mają do czynienia z witrynami o głębokiej strukturze.

hugi coapete
źródło
-7

Narzędzie wget pobiera pliki z sieci World Wide Web (WWW) przy użyciu powszechnie używanych protokołów, takich jak HTTP, HTTPS i FTP. Narzędzie Wget jest darmowym pakietem, a licencja jest objęta Licencją GNU GPL. To narzędzie można zainstalować w dowolnym systemie operacyjnym typu Unix, w tym w systemie Windows i MAC OS. To nieinteraktywne narzędzie wiersza poleceń. Główną cechą Wget jest solidność. Został zaprojektowany w taki sposób, aby działał w wolnych lub niestabilnych połączeniach sieciowych. Wget automatycznie rozpocznie pobieranie od miejsca, w którym zostało przerwane w przypadku problemu z siecią. Pobiera również plik rekurencyjnie. Będzie próbować, dopóki plik nie zostanie całkowicie pobrany.

Zainstaluj wget na komputerze z systemem Linux sudo apt-get install wget

Utwórz folder, do którego chcesz pobrać pliki. sudo mkdir myimages cd myimages

Kliknij prawym przyciskiem myszy stronę internetową i na przykład, jeśli chcesz umieścić obraz, kliknij prawym przyciskiem myszy obraz i skopiuj lokalizację obrazu. Jeśli jest wiele obrazów, wykonaj poniższe czynności:

Jeśli istnieje 20 obrazów do pobrania jednocześnie z internetu, zakres zaczyna się od 0 do 19.

wget http://joindiaspora.com/img {0..19} .jpg

Trupti Kini
źródło
2
Twoja odpowiedź wyjaśnia, czym jest wget i jak go używać do pobierania obrazów numerowanych sekwencyjnie ... żadne z nich nie jest związane z pierwotnym pytaniem.
Alastair