Как загрузить все файлы (но не HTML) с веб-сайта с помощью wget?

Как использовать wget и получить все файлы с веб-сайта?

Мне нужны все файлы, кроме файлов веб-страниц, таких как HTML, PHP, ASP и т. Д.


person Aniruddhsinh    schedule 06.01.2012    source источник
comment
Даже если вы хотите загрузить php, это невозможно с помощью wget. Мы можем получить только необработанный HTML с помощью wget. Я думаю ты знаешь причину   -  person Venkateshwaran Selvaraj    schedule 26.09.2013
comment
NB: Всегда сначала проверяйте wget --spider и всегда добавляйте -w 1 (или больше -w 5), чтобы не переполнять сервер другого человека.   -  person isomorphismes    schedule 06.03.2015
comment
Как я могу скачать все файлы pdf на этой странице? pualib.com/collection/pua-titles-a.html   -  person    schedule 16.11.2015
comment
Stack Overflow - это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. Какие темы можно задать здесь в Справочном центре. Возможно, суперпользователь или Unix и Linux Stack Exchange лучше спросить. Также см. Где я могу задать вопросы о Dev Ops?   -  person jww    schedule 20.02.2017


Ответы (8)


Чтобы отфильтровать определенные расширения файлов:

wget -A pdf,jpg -m -p -E -k -K -np http://site/path/

Или, если вы предпочитаете длинные имена опций:

wget --accept pdf,jpg --mirror --page-requisites --adjust-extension --convert-links --backup-converted --no-parent http://site/path/

Это будет зеркальным копированием сайта, но файлы без расширения jpg или pdf будут автоматически удалены.

person Zsolt Botykai    schedule 06.01.2012
comment
Если вы просто хотите загружать файлы без архитектуры целых каталогов, вы можете использовать опцию -nd. - person diabloneo; 28.08.2014
comment
что означает каждый из флагов? - person Jürgen Paul; 18.11.2014
comment
Я думаю, --accept чувствителен к регистру, поэтому вам придется сделать --accept pdf,jpg,PDF,JPG - person Flimm; 21.11.2014
comment
не уверен, что это с новой версией wget, но вы должны указать тип --progress, например --progress=dot - person jamis; 24.03.2016
comment
@Flimm вы также можете использовать флаг --ignore-case, чтобы --accept регистр не учитывался. - person Harsh; 03.05.2017
comment
@jamis, пост поправил. --progress - это не более длинное имя опции для -p. Это должно быть --page-requisites, как в man. - person CurtisLeeBolin; 17.11.2017
comment
Спасибо, эта команда позволяет мне скачивать все артефакты из jfrog-artifactory. ты спас мне жизнь чувак - person Gujarat Santana; 23.03.2018
comment
Вероятно, вы не хотите -E с --accept (или -A). Если принимаемый тип - обычный текст, то -E переименует его в name.html. Тогда он не будет соответствовать --accept и будет удален. - person bodgesoc; 04.09.2020
comment
Я попытался запустить эту команду для https://www.balluff.com, и она успешно загружает несколько PDF-файлов, но не хватает тех, что на этой странице balluff.com/en/de/service/downloads/brochures-and-catalogues / # /. Например, это: assets.balluff.com/WebBinary1/ были теми, что были здесь самый интересный. Есть идеи, почему? @diabloneo - person x89; 07.07.2021
comment
Я попытался запустить эту команду для https://www.balluff.com, и она успешно загружает несколько PDF-файлов, но не хватает тех, что на этой странице balluff.com/en/de/service/downloads/brochures-and-catalogues / # /. Например, это: assets.balluff.com/WebBinary1/ были теми, что были здесь самый интересный. Есть идеи, почему? @Жесткий - person x89; 07.07.2021

Это скачали мне весь веб-сайт:

wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://site/path/
person izilotti    schedule 19.11.2013
comment
+1 за -e robots=off! Это наконец решило мою проблему! :) Спасибо - person NHDaly; 22.12.2013
comment
Вариант --random-wait гениален;) - person poitroae; 06.02.2014
comment
@izilotti Может ли владелец сайта узнать, ПОЛУЧАЕТЕ ли вы его файлы сайта этим методом? - person Elias7; 04.04.2014
comment
@whatIsperfect Это определенно возможно. - person Jack; 08.04.2014
comment
@JackNicholsonn Откуда владелец сайта узнает? Используемый агент был Mozilla, что означает, что все заголовки будут входить в качестве браузера Mozilla, поэтому определение используемого wget будет невозможно? Пожалуйста, поправьте, если я ошибаюсь. Благодарность - person KhoPhi; 29.10.2014
comment
@ Elias7 Будет ли знать об этом владелец сайта? да. Владелец сайта может встроить ссылку, которая исключена тегом robots или невидима для людей. Владелец сайта может пойти еще дальше и отравить запретный путь. - person Steven the Easily Amused; 26.02.2016
comment
Это работает! Но это подход BFG. Скачивает все. - person Ufos; 06.05.2018
comment
Вы можете взглянуть сюда? stackoverflow.com/questions/68287730/ - person x89; 07.07.2021

wget -m -p -E -k -K -np http://site/path/

страница руководства расскажет вам, что делают эти параметры.

wget будет переходить только по ссылкам, если на странице индекса нет ссылки на файл, wget не узнает о его существовании и, следовательно, не загрузит его. т.е. это помогает, если на все файлы есть ссылки на веб-страницах или в индексах каталогов.

person Jesse    schedule 06.01.2012
comment
Спасибо за ответ :) Он копирует весь сайт, и мне нужны только файлы (например, txt, pdf, изображения и т. Д.) На сайте - person Aniruddhsinh; 06.01.2012

Я пытался загрузить zip-файлы, ссылки на которые есть на странице тем Omeka - довольно похожая задача. Это сработало для меня:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
  • -A: принимать только zip-файлы
  • -r: рекурсивный
  • -l 1: на один уровень (т. Е. Только файлы, на которые есть прямые ссылки с этой страницы)
  • -nd: не создавайте структуру каталогов, просто загрузите все файлы в этот каталог.

Все ответы с параметрами -k, -K, -E и т. Д., Вероятно, не совсем поняли вопрос, например, о переписывании HTML-страниц для создания локальной структуры, переименовании .php файлов и так далее. Не имеет значения.

Чтобы получить буквально все файлы кроме .html и т. Д .:

wget -R html,htm,php,asp,jsp,js,py,css -r -l 1 -nd http://yoursite.com
person Steve Bennett    schedule 21.05.2014
comment
-A, я думаю, чувствителен к регистру, поэтому вам придется сделать -A zip,ZIP - person Flimm; 21.11.2014
comment
Вы можете взглянуть сюда? stackoverflow.com/questions/68287730/ @Flimm - person x89; 07.07.2021

Вы можете попробовать:

wget --user-agent=Mozilla --content-disposition --mirror --convert-links -E -K -p http://example.com/

Также вы можете добавить:

-A pdf,ps,djvu,tex,doc,docx,xls,xlsx,gz,ppt,mp4,avi,zip,rar

чтобы принять определенные расширения или отклонить только определенные расширения:

-R html,htm,asp,php

или исключить определенные области:

-X "search*,forum*"

Если файлы игнорируются роботами (например, поисковыми системами), вы также должны добавить: -e robots=off

person kenorb    schedule 10.12.2013

Попробуй это. У меня всегда работает

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
person Suneel Kumar    schedule 23.09.2014

wget -m -A * -pk -e robots=off www.mysite.com/

это загрузит все типы файлов локально и укажет на них из файла html и проигнорирует файл роботов

person Abdalla Mohamed Aly Ibrahim    schedule 20.12.2014

Я знаю, что эта тема очень старая, но я попал сюда в 2021 году в поисках способа загрузить все файлы Slackware с зеркала (http://ftp.slackware-brasil.com.br/slackware64-current/).

Прочитав все ответы, лучшим вариантом для меня был:

wget -m -p -k -np -R '*html*,*htm*,*asp*,*php*,*css*' -X 'www' http://ftp.slackware-brasil.com.br/slackware64-current/

Мне пришлось использовать *html* вместо просто html, чтобы избежать таких загрузок, как index.html.tmp.

Пожалуйста, простите меня за воскрешение этой темы, я подумал, что она может быть полезна кому-то другому, кроме меня, и мои сомнения очень похожи на вопрос @ Aniruddhsinh.

person Nerun    schedule 17.05.2021