Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Wget

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

Открыть новую тему     Написать ответ в эту тему

GaDiNa



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[ UNIX Shell ] || [ Рекурсивная загрузка веб-сайтов ] — родительские ветки.
 
GNU Wget

GNU Wget — это свободная неинтерактивная утилита для скачивания файлов по HTTP, HTTPS, FTP и FTPS (и только), обладающая самым базовым функционалом загрузки одиночных файлов и рекурсивной загрузки сайтов (HTTP) и директорий (FTP).
 

| Офсайт | Википедия | Фрешмит | Опен-хаб (бывш. Охлох) | Мануал | Ман | Ман (русск., устар.) | --help (русск.) |

 
Где взять.
Под GNU — уже стоит. Под FreeBSD — есть в портах. Под [Mac] OS X — собрать ванильный.  
Под Windows есть варианты: Cygwin | GNUWin32 (учитывайте зависимости) | Wget + OpenSSL by GetGnuWin32  | by TumaGonx Zakkum (он же osspack32 и The Moluccas  |  by Jernej Simoncc (32 и 64 бит отдельные пакеты) | Wget2.
.
 
Литература.
Popkov. Параметры программы wget
В. А. Петров. Wget — насос для Интернета
 
FAQ
 
Q: Можно ли простым перебором загрузить страницы (допустим) с первой по сотую, если их адреса:  
http://example.org/index?page=1
http://example.org/index?page=2
...
http://example.org/index?page=100
A: Вэ-гет не умеет делать инкрементальный перебор, поскольку это умеет делать любая командная оболочка. На Баше это делается так:
$ wget -E "http://example.org/index?page="{1..100}
Еще раз отметьте, {1..100} — это синтаксическая конструкция Баша, а не Вэ-гета. Эквивалентной этой будет команда:
$ for i in {1..100}; do wget -E "http://example.org/index?page=$i"; done
Или для cmd.exe:
for /l %i in (1,1,100) do wget -E "http://example.org/index?page=%i"
 
Q: А как собственно сайт целиком-то загрузить?
A: $ wget -mpEk "http://example.org"
Это, наверное, самый ходовой набор ключей, но вам, может быть, более подойдут другие. Что значит каждый — легко узнать в мане.
 
Q: Я хочу загрузить с сайта, требующего авторизации. Что делать?
A: Проще всего кинуть куда-нибудь файл с нужными (но лишние не помешают) куками в нетскэйповском формате, затем воспользоваться ключом --load-cookies.
$ wget --load-cookies cookies.txt бла-бла # файл cookies.txt в текущей директории
У Файрфокса куки в требуемом виде можно получить, воспользовавшись расширениями «Export Cookies» либо «Cookie.txt»; у Хрома — «Cookie.txt export»
 
Q: Не-ASCII символы сохраняются в именах файлов как %D0%A5%D1%83%D0%B9 (или того хуже), хотя локаль юникодная.
A: Укажите ключ --restrict-file-names=nocontrol,unix или --restrict-file-names=nocontrol,windows соответственно.
Если у вас Windows и локаль не юникодная — используйте вариант от Alex_Piggy с ключом --local-filesystem-encoding=ENCODING, где ENCODING — имя кодировки локали в терминах iconv. Текущую локаль cmd.exe можно проверить при помощи команды chcp. Для русской кириллицы в Windows обычно используется CP866.
 
Q: Известно, что можно приказать Вэ-гету обновить ранее загруженный файл, если на сервере новее или иного размера (ключ --timestamping, он же -N). Можно приказать учитывать только дату, но не размер (--timestamping --ignore-length). А можно ли учитывать только размер, но не дату?
A: При помощи одного только Wget’а — нет.  Возможна обработка получаемых заголовков файла при помощи средств командной оболочки. Пример для cmd.exe.
 
Q: Можно ли приказать Вэ-гету докачать файл, но только если он не изменился.
A: Нет, нельзя. Сочетание ключей -cN (--continue --timestamping), как можно было бы предположить, нужного эффекта не даст — «докачает» даже если файл изменился — получите в итоге мусор.
 
Q: Можно ли при рекурсивной загрузке ограничится только ссылками, содержащими параметр lang=ru, т.е. грузить:
http://example.org/index?lang=ru
http://example.org/page?id=1001&lang=ru
http://example.org/file?id=60&lang=ru&format=dvi
и не грузить:
http://example.org/index?lang=en
http://example.org/about?lang=fr
и т.д.
A: Для версий < 1.14 нет такой возможности.  
Общий вид URI: <протокол>://<логин>:<пароль>@<хост>:<порт>/<путь>?<параметры>#<якорь>. Так вот ключи -I (--include-directories) и -X (--exclude-directories) относятся только к пути, но не к параметрам.
В версиях > 1.14 возможно при использовании ключей --accept-regex / --reject-regex. Пример: --reject-regex "lang=[^r][^u]"
 
Q: Можно ли средствами Вэ-гета ограничить перечень загружаемых файлов по дате модификации (новее чем, старше чем)?
A: Нет такой возможности.
 
Q: Можно ли при рекурсивной или множественной загрузке произвольно задать целевые пути и/или имена файлов на основе пути/имени по-умолчанию (применить транслитерацию, отбросить хвостовую часть) или хотя бы независимо (сгенерировать случайно или по счетчику)?
A: Нет.
 
Q: То — нельзя, это — невозможно. Почему все так плохо?
A: Потому что Вэ-гет на настоящий момент — базовая программа, предоставляющая только самый базовый функционал. Если вы уперлись в потолок ее возможностей, просто смените ее на другой инструмент. Из неинтерактивных свободных программ наиболее функциональными будут:
aria2c — для загрузки одиночных файлов по HTTP(S), FTP, бит-торренту;
httrack — для рекурсивной загрузки («зеркалирования») веб-сайтов;
lftp — для работы по FTP, FTPS, SFTP, FISH, а также с листингами, отдаваемыми по HTTP(S) (пример).
curl — для работы с одиночными файлам по HTTP(S), FTP(S) и многими другими протоколами на более низком уровне.
wput — клон wget для аплоада файлов на удаленные FTP(S) сервера.
axel — клон wget для многопоточной загрузки одиночных файлов по протоколам HTTP(S) и FTP(S). Порты для Windows: 2.4, 2.16.1
 
Разное.
GUI для Wget’а
 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.

Всего записей: 1551 | Зарегистр. 17-06-2003 | Отправлено: 13:39 08-11-2003 | Исправлено: anynamer, 11:40 25-12-2023
DimitriusXZ

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wgetrc не использую.
Кючи вот такие -r -l 0 -p -np -c -nc -k -K -x

Всего записей: 828 | Зарегистр. 17-01-2010 | Отправлено: 18:09 03-02-2021
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DimitriusXZ

Цитата:
При рекурсивной загрузке сайта у меня wget не скачивает .css, .js и др. подобные файлы.  

На целевом сайте, в файле robots.txt могут быть ограничения на загрузку некоторых типов файлов, поэтому бывает полезно отключить его использование при рекурсивной загрузке
 
wget -e robots=off ...

Всего записей: 4924 | Зарегистр. 05-01-2006 | Отправлено: 20:08 05-02-2021 | Исправлено: mithridat1, 20:13 05-02-2021
kotel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Требуется помощь!  
нужно загружать файлы по ссылкам вида
 
https://daimlerdownloads-a.akamaihd.net/prod/symbolic/f2/b7/f2b7416fa452d9d77864a7979b3bf1a9c89d7ad7d817b4acb8d1d63abe56c847/1/2479021706_001_2479027903_001_01-CFF-20200106_1821.zip?token=st=1578341370~exp=4102397970~hmac=3e37e0a25c501ee86f7810aecb5758188912c6fc7991f575051c7db9d743c06e
 
wget их качает, но именует
2479021706_001_2479027903_001_01-CFF-20200106_1821.zip?token=st=1578341370~exp=4102397970~hmac=3e37e0a25c501ee86f7810aecb5758188912c6fc7991f575051c7db9d743c06e
 
вместо
2479021706_001_2479027903_001_01-CFF-20200106_1821.zip
 
подскажите, как с этим бороться?

Всего записей: 595 | Зарегистр. 21-08-2003 | Отправлено: 03:08 02-03-2021 | Исправлено: kotel, 04:02 02-03-2021
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kotel
Если сервер правильно настроен то обычно для получения корректного имени файла используют опцию
 
--content-disposition       honor the Content-Disposition header when
                                     choosing local file names
 
Но поскольку тут это не работает то только задавать имя вручную через -O либо писать скрипт для переименования (либо скачать все а потом переименовать по шаблону).
 
 
Добавлено:
С curl  -O -J ...  у меня та же история, а вот aria2c качает файлы по таким ссылкам так как вам надо.

Всего записей: 4924 | Зарегистр. 05-01-2006 | Отправлено: 06:57 02-03-2021 | Исправлено: mithridat1, 08:21 02-03-2021
kotel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, буду пробовать!

Всего записей: 595 | Зарегистр. 21-08-2003 | Отправлено: 10:46 02-03-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
kotel
 
Сервер не отдаёт имя файла. Курл в таком случае читает его имя из URL, потому задавайте -O <filename> | --output=<filename>. С Wget приём аналогичен.


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

Всего записей: 33134 | Зарегистр. 31-07-2002 | Отправлено: 10:57 02-03-2021
kotel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в моем случае не прокатит
ссылки я получаю именно в этом виде
и их в списке примерно 110 тыс.

Всего записей: 595 | Зарегистр. 21-08-2003 | Отправлено: 11:04 02-03-2021
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kotel
Дык скриптом можно получить нужное имя из любого кол-ва ссылок. Какая ОС?

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 11:06 02-03-2021
kotel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ось - Win10
 
Вообще задача такая
я получаю файл со ссылками
примерно 110 000 ссылок
ставлю на закачку ( это в районе 4 терабайт...)
 
раз в месяц получаю новый файл, где добавляется 1000-2000 строк
соответственно имеющиеся файлы должны пропускаться, новые закачиваться
 
можно и не wget

Всего записей: 595 | Зарегистр. 21-08-2003 | Отправлено: 15:07 02-03-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kotel

Цитата:
раз в месяц получаю новый файл, где добавляется 1000-2000 строк  

не проще ли еще и файл со ссылками отредактировать?
 

Всего записей: 7322 | Зарегистр. 08-09-2001 | Отправлено: 16:14 02-03-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kotel
Я в теме про aria2 приводил пример решения подобной задачи
http://forum.ru-board.com/topic.cgi?forum=5&topic=49715&start=37&limit=1&m=1#1
 
В данном случае будет как-то так

Код:
@echo off
 
for /F "tokens=1" %%A in (files.txt) do (
for /F "tokens=1-12 delims=/?" %%G in ("%%A") do (
wget "%%A" -O "%%O"))
 

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 18:19 02-03-2021 | Исправлено: Fenrizz, 19:00 02-03-2021
DimitriusXZ

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
mithridat1


Цитата:
На целевом сайте, в файле robots.txt могут быть ограничения на загрузку некоторых типов файлов, поэтому бывает полезно отключить его использование при рекурсивной загрузке  
 
wget -e robots=off ...

 
Большое спасибо mithridat1.

Всего записей: 828 | Зарегистр. 17-01-2010 | Отправлено: 02:25 09-03-2021
Werty666



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Помогите с регуляркой, есть такие вот ссулки на изображения
 
https://architizer-prod.imgix.net/media/mediadata/uploads/1614634705084ButlerArmsden_Orinda_50S4158.jpg
https://architizer-prod.imgix.net/media/mediadata/uploads/1614634822452ButlerArmsden_Orinda_50S4574_copy.jpg
 
т.е. постоянные это начало адреса https://architizer-prod.imgix.net/media/mediadata/uploads/
 
и ButlerArmsden_Orinda
 
 
соответственно то что курсивом - постоянно меняющиеся
 
собрал из ман'а - но не работает
 
wget -mkEpnp --regex-type pcre --accept-regex "(\d+)ButlerArmsden_Orinda(.*)" https://architizer-prod.imgix.net/media/mediadata/uploads/
 
помогите составить, а, и только для jpg и еще собирались бы они в папку "ButlerArmsden_Orinda" вообще был бы праздник
 

Всего записей: 369 | Зарегистр. 20-07-2008 | Отправлено: 23:43 09-03-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Werty666
Wget по умолчанию использует POSIX regex  
https://en.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions
http://www.softpanorama.org/Scripting/Regexorama/posix_regular_expressions.shtml
 
Так что должно быть  --accept-regex "([:digit:]+)ButlerArmsden_Orinda([:alnum:]*)"

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 09:39 10-03-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Werty666

Цитата:
собрал из ман'а - но не работает

так вроде бы и не должно работать - wget не может получить список файлов к которому уже будет применены regex и т.п. Это не вдаваясь в используемый вами синтаксис.
 
Добавлено:
Fenrizz

Цитата:
Wget по умолчанию использует POSIX regex  

у Werty666 используется ключ '--regex-type pcre'

Всего записей: 7322 | Зарегистр. 08-09-2001 | Отправлено: 10:04 10-03-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los

Цитата:
у Werty666 используется ключ '--regex-type pcre'  

Точно, не заметил

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 10:30 10-03-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz

Цитата:
Точно, не заметил

только это? Или [:digit:], а не [[:digit:]] в данном случае нормально?

Всего записей: 7322 | Зарегистр. 08-09-2001 | Отправлено: 10:47 10-03-2021
Werty666



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz спасибо, но в этом случае что-то у меня на сработало(( подскажите из собственного опыта, ведь в этой теме одни грабители сайтов)) почему не работает эта конструкция? Сервер защищает?
 
c:\Portable App\Total Commander\Utils\Wget>wget --accept-regex "([:digit:]+)ButlerArmsden_Orinda([:alnum:]*)" https://architizer-prod.imgix.net/media/mediadata/uploads/
--2021-03-10 12:45:16--  https://architizer-prod.imgix.net/media/mediadata/uploads/
 
Resolving architizer-prod.imgix.net (architizer-prod.imgix.net)... 2a04:4e42:3::720, 151.101.14.208
Connecting to architizer-prod.imgix.net (architizer-prod.imgix.net)|2a04:4e42:3::720|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2021-03-10 12:45:16 ERROR 404: Not Found.

Всего записей: 369 | Зарегистр. 20-07-2008 | Отправлено: 12:47 10-03-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
но в этом случае что-то у меня на сработало

так бывает, когда не читают ответы на заданный вопрос да и остальное относящееся к вопросу тоже.

Всего записей: 7322 | Зарегистр. 08-09-2001 | Отправлено: 13:04 10-03-2021
Werty666



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los только сейчас прочитал посты следующие за ответом, на момент применения их не было
 
Заключил в двойные квадратные скобки и изменил команду на --regex-type pcre все равно не хочет тянуть картинки(((
 
c:\Portable App\Total Commander\Utils\Wget>wget --regex-type pcre "([[:digit:]]+)ButlerArmsden_Orinda([[:alnum:]]*)" https://architizer-prod.imgix.net/media/mediadata/uploads/
--2021-03-10 13:52:57--  ftp://(%5B%5B/digit:]]+)ButlerArmsden_Orinda([[:alnum:]]*)
           => '.listing'
Resolving ([[ (([[)... failed: Этот хост неизвестен. .
wget: unable to resolve host address '([['
--2021-03-10 13:52:57--  https://architizer-prod.imgix.net/media/mediadata/uploads/
Resolving architizer-prod.imgix.net (architizer-prod.imgix.net)... 2a04:4e42:3::720, 151.101.14.208
Connecting to architizer-prod.imgix.net (architizer-prod.imgix.net)|2a04:4e42:3::720|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2021-03-10 13:52:58 ERROR 404: Not Found.
 
Из лога понятно для опытного пользователя, что я делаю не так?? Плиз хэлп ми

Всего записей: 369 | Зарегистр. 20-07-2008 | Отправлено: 13:48 10-03-2021 | Исправлено: Werty666, 13:56 10-03-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

Компьютерный форум Ru.Board » Компьютеры » Программы » Wget


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru