Как использовать Wget для загрузки всех изображений в одну папку по URL-адресу?

133

Я использую wget для загрузки всех изображений с веб-сайта, и он отлично работает, но сохраняет исходную иерархию сайта со всеми вложенными папками, поэтому изображения разбросаны по сторонам. Есть ли способ, чтобы он просто загружал все изображения в одну папку? Синтаксис, который я использую в данный момент:

wget -r -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
geoffs3310
источник

Ответы:

194

Попробуй это:

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

Вот еще немного информации:

-ndпредотвращает создание иерархии каталогов (т.е. отсутствие каталогов ).

-rразрешает рекурсивный поиск. См. Рекурсивную загрузку для получения дополнительной информации.

-P устанавливает префикс каталога, в который сохраняются все файлы и каталоги.

-Aустанавливает белый список для получения только определенных типов файлов. Допускаются строки и шаблоны, и их можно использовать в списке, разделенном запятыми (как показано выше). Для получения дополнительной информации см. Типы файлов .

Джон
источник
5
На самом деле это не сработало для меня. Мое место сохранения было "." и там скопирована вся иерархия сайтов.
Баттл Буткус
2
@ButtleButkus Похоже, вам нужно немного повозиться с -Aопцией accept , см. Документацию Wget о типах файлов . Кроме того, если вы загружаете в текущий каталог, вы можете удалить -Pопцию префикса каталога . Если вы загружаете файл одного типа, например только jpg, используйте что-нибудь вроде wget -r -A.jpg http://www.domain.com. Посмотрите на расширенные примеры, которые предоставляет документация Wget.
Джон
Добавление -nd к вышесказанному заставляет его работать. Вы также можете указать несколько флагов -A, например-A "*foo*" -A "*bar*"
Yablargo
1
Не забудьте использовать --level=infили, --level=9999999999потому что wgetэто может сорвать работу из-за максимального уровня глубины рекурсии по умолчанию 5.
user619271
127
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co
  • -nd: нет каталогов (сохранить все файлы в текущем каталоге; -P directoryизменить целевой каталог)
  • -r -l 2: рекурсивный уровень 2
  • -A: допустимые расширения
wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2}
  • -H: span hosts (по умолчанию wget не скачивает файлы с разных доменов или поддоменов)
  • -p: реквизиты страницы (включает ресурсы, например изображения на каждой странице)
  • -e robots=off: выполнить команду, robotos=offкак если бы она была частью .wgetrcфайла. Это отключает исключение роботов, что означает, что вы игнорируете robots.txt и мета-теги роботов (вы должны знать, к каким последствиям это приведет, будьте осторожны).

Пример: получить все .jpgфайлы из примерного списка каталогов:

$ wget -nd -r -l 1 -A jpg http://example.com/listing/
LRI
источник
13

Я написал сценарий оболочки, который решает эту проблему для нескольких веб-сайтов: https://github.com/eduardschaeli/wget-image-scraper

(Вырезает изображения из списка URL с помощью wget)

Ezy
источник
Работал отлично. Спасибо
Джаред Мартин
9

Попробуй это:

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

и подождите, пока он удалит всю лишнюю информацию

orezvani
источник
У меня это не работает. wget -nd -r -P /Users/duraiamuthan/Downloads/images/ -A jpeg,jpg,bmp,gif,png http://www.forbes.com/profile/mark-zuckerberg/
Vivo
5

Согласно странице руководства, флаг -P:

-P prefix --directory-prefix = prefix Установить префикс каталога как префикс. Префикс каталога - это каталог, в котором будут сохранены все другие файлы и подкаталоги, то есть верхняя часть дерева поиска. По умолчанию это. (текущий каталог).

Это означает, что он указывает только место назначения, но и место для сохранения дерева каталогов. Он не сводит дерево только в один каталог . Как упоминалось ранее, на самом деле это делает флаг -nd.

@Jon: в будущем было бы полезно описать, что делает флаг, чтобы мы понимали, как что-то работает.

Михаил Ягудаев
источник
2

Предлагаемые решения идеально подходят для загрузки изображений и если вам достаточно сохранить все файлы в используемом каталоге. Но если вы хотите сохранить все изображения в указанном каталоге без воспроизведения всего иерархического дерева сайта, попробуйте добавить «каталогов» к строке, предложенной Джоном.

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

в этом случае каталоги не позволят wget создавать подкаталоги до 3-го уровня глубины иерархического дерева веб-сайта, сохраняя все файлы в указанном вами каталоге. Вы можете добавить дополнительные каталоги с более высокими номерами, если вы имеют дело с сайтами с глубокой структурой.

Hugi Coapete
источник
-7

Утилита wget извлекает файлы из всемирной паутины (WWW), используя широко используемые протоколы, такие как HTTP, HTTPS и FTP. Утилита Wget - это свободно доступный пакет, лицензия на который распространяется под лицензией GNU GPL. Эта утилита может быть установлена ​​в любой Unix-подобной операционной системе, включая Windows и MAC OS. Это неинтерактивный инструмент командной строки. Главная особенность Wget - надежность. Он разработан таким образом, чтобы работать в медленных или нестабильных сетевых соединениях. Wget автоматически начнет загрузку с того места, где она была остановлена, в случае проблем с сетью. Также скачивает файл рекурсивно. Он будет продолжать попытки, пока файл не будет полностью извлечен.

Установите wget на Linux-машину sudo apt-get install wget

Создайте папку, в которую вы хотите загружать файлы. sudo mkdir myimages cd myimages

Щелкните правой кнопкой мыши на веб-странице и, например, если вы хотите, чтобы местоположение изображения, щелкните правой кнопкой мыши изображение и скопируйте местоположение изображения. Если есть несколько изображений, выполните следующие действия:

Если есть 20 изображений для одновременной загрузки из Интернета, диапазон начинается от 0 до 19.

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

Trupti Kini
источник
2
Ваш ответ объясняет, что такое wget и как его использовать для загрузки изображений с последовательными номерами ... ни то, ни другое не связано с исходным вопросом.
Alastair