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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Sisin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, можно ли с помощью wget скачивать файлы за последние 3 дня?
Если да, то как??

Всего записей: 993 | Зарегистр. 07-05-2010 | Отправлено: 23:01 05-04-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sisin
С помощью wget - не знаю, а cURL-ом так

Код:
curl -z "Apr 03 2021" http://remote.server.com/remote.html  


Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 09:13 06-04-2021 | Исправлено: Fenrizz, 09:14 06-04-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sisin
 
Для Wget 1.21.1 by Jernej Simoncc для Windows среди доступных ключей командной строки вроде нет такого, чтобы задать желаемое поведение, а cURL это умеет.


----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
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 | Отправлено: 09:43 06-04-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь использовал wget-for-windows, как впечатления?

Цитата:
-cares +digest -gpgme +https +iconv +ipv6 +iri +large-file -metalink
-nls +ntlm +opie -psl +ssl/wintls

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



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

Цитата:
С помощью wget - не знаю, а cURL-ом так

 
Я же правильно понимаю, что curlом нельзя скачивать все содержимое фтп папки??
 
Мне нужно с фтп папки скачивать все файлы, которые появились там за 3 дня. Чем то это можно реализовать???

Всего записей: 993 | Зарегистр. 07-05-2010 | Отправлено: 23:30 06-04-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sisin
 
Можно, например в цикле FOR CMD:
 
 for /f %%A in ('curl -l <url>') do curl -C - -LRZO -z "<startdate>" <url>%%A  
 
<url> - линк на корневую папку задачи;
<startdate> - начинать с даты и новее...
 
если версия curl ниже 7.66, то чуть меняем команду скачивания - -LRZO заменяем на -LRO т.к. там ключ -Z (--parallel) ещё не существовал.
 
вот батник spider.cmd под cURL 7.66 и новее

Код:
echo off
rem %1 - source url
rem %2 - start time, example 197001010 - <yyyy><mm><dd>[<hh><mm><ss>]
setlocal enableextensions
if "%2" == "" set tm=19790101 else set tm=%2
if "%1" == "" echo Required URL is empty. & pause & exit /b
for /f %%A in ('curl -l %1') do curl -C - -LRZO -z "%tm%" %1%%A
exit

 
los
 
Прошу прощения, не сразу увидел вопрос:

Цитата:
при использовании ключей ca-directory и т.п. ситуация такая же?

да, с этим ключом не всякая вин-сборка корректно работает. Обычно или пишет ошибку проверки, или говорит файл не найден. Потому на винде я его не применяю - меньше ошибок.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
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 | Отправлено: 00:05 07-04-2021 | Исправлено: Victor_VG, 00:47 07-04-2021
los

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

Цитата:
Мне нужно с фтп папки скачивать все файлы, которые появились там за 3 дня.

c ключом '-N' экспериментировали?

Цитата:
Чем то это можно реализовать???

какая ОС?

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



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

Цитата:
echo off
rem %1 - source url
rem %2 - start time, example 197001010 - <yyyy><mm><dd>[<hh><mm><ss>]
setlocal enableextensions
if "%2" == "" set tm=19790101 else set tm=%2
if "%1" == "" echo Required URL is empty. & pause & exit /b
for /f %%A in ('curl -l %1') do curl -C - -LRZO -z "%tm%" %1%%A
exit

 
Не понял как это должно работать.
 

Цитата:
c ключом '-N' экспериментировали?

 
Ключ к сабжу??
 

Цитата:
какая ОС?

 
Windows 7 x64
 
Добавлено:
Мне надо скачать из ftp папки все файлы не старше 3 дней. Вход в ftp с логином и паролем.

Всего записей: 993 | Зарегистр. 07-05-2010 | Отправлено: 21:52 07-04-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sisin
Так работает? Это надо запускать из bat-файла.

Код:
for /f %%f in ('curl -s -l -u user:pass ftp://ftp.myftpsite.com/') do curl -z "20210404" -O -u user:pass ftp://ftp.myftpsite.com/%%f  

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 22:02 07-04-2021 | Исправлено: Fenrizz, 22:22 07-04-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sisin
 
зовёте батник, первый параметр (%1) линк, второй (%2) дата как в его коде.  Например spider ftp://ftp5.gwdg.de/pub/tdf/libreoffice/src/ 20210324  . И ждёте завершения его работы.
 
Добавлено:
Логин и пароль просто пишутся в URL -  
 
ftp://[<login>:<password>@]ftp5.gwdg.de[:<port>]/pub/tdf/libreoffice/src/7.1.2/
 
элементы в [] скобках могут быть опущены - смотрите RFC-1738 :: 3.1. Common Internet Scheme Syntax. Aria2, cURL, Wget сами разберут записанный по правилам RFC-1738 URL.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
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 | Отправлено: 00:15 08-04-2021
Sisin



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

Цитата:
for /f %%f in ('curl -s -l -u user:pass ftp://ftp.myftpsite.com/') do curl -z "20210404" -O -u user:pass ftp://ftp.myftpsite.com/%%f  

 
А можно как-то ускорить процесс?? Если 1000 файлов, то очень медленно работает.

Всего записей: 993 | Зарегистр. 07-05-2010 | Отправлено: 00:05 12-04-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sisin
 
Ключ -Z | --parallel и cURL версии 7.66 или новее. Больше в консоли ничего не сделать, кроме запуска нескольких независимых скриптов закачки в отдельных консолях т.к. консоль в принципе последовательная штука. Выполнила одну команду и запускает следующую.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
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 | Отправлено: 01:23 12-04-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sisin
Можно попробовать использовать команду START для скачивания, тогда можно параллельно скачивать несколько файлов.  

Цитата:
In a batch script, a START command without /wait will run the program and just continue, so a script containing nothing but a START command will close the CMD console and leave the new program running.

 
Но надо проверить, нет ли на ftp ограничений на количество потоков с одного ip.

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 07:51 12-04-2021 | Исправлено: Fenrizz, 07:53 12-04-2021
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
 
Обычно есть, типично до 4-х соединений/потоков на клиента. Иначе кто-то один весь канал выберет и получим DOS атаку.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")
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:58 12-04-2021
los

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

Цитата:
Больше в консоли ничего не сделать

cat urls | xargs -P4 -n1 curl

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

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время.  
Не уверен насчет логики curl + ftp. Надо смотреть/пробовать.  
Но wget + http при последовательном запуске много времени тратит на соединение. С --keep-http-alive + список из файла намного быстрее.
Можно попробовать curl config file

Код:
 
echo off> url.lst
for /f %%f in ('curl -s -l -u user:pass ftp://ftp.myftpsite.com/') do echo url=ftp://ftp.myftpsite.com/%%f   >>url.lst
curl -z "20210404" -O -u user:pass --remote-name-all -K url.lst
 

В худшем случае уменьшится на время запуска копии curl.
UPD: Да, использует то же соединение.

Цитата:
* Connection #0 to host ftp.sta.gov.ua left intact
* Found bundle for host ftp.sta.gov.ua: 0x55d300f72450 [serially]
* Re-using existing connection! (#0) with host ftp.sta.gov.ua
* Connected to ftp.sta.gov.ua (80.91.165.213) port 21 (#0)
* Request has same path as previous transfer

Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 11:18 12-04-2021 | Исправлено: Alex_Piggy, 11:26 12-04-2021
salzburger

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста, прояснить проблему. Есть сайт ebase.com, куда заходишь по логину и паролю, на нем находится много pdf-файлов - штук 80, а то и побольше. Ссылки к ним вполне можно вытащить из исходного кода страницы и после вбивания их в браузер отображается содержимое pdf-ника. Проблема в том, что скачать такой файл получается только вручную, т.е. посредством браузера. Я пытался сделать это с помощью wget (ранее с этой утилитой не работал, в ключах полный ноль), задавая в качестве ссылки прямой интернет-адрес pdf, но вместо него все время скачивается error_410.htm. Не подскажете, можно ли это как-то обойти и можно ли это сделать с помощью wget или какой-то другой консольной утилиты? Пробовал скачивать из командной строки в Windows 10, в процессе выдалось примерно следующее:
 
wget https://portal.ebase.com/(e18)/overview/cache/down.pdf
--2021-04-22 13:21:24--  https://portal.ebase.com/(e18)/overview/cache/down.pdf
Resolving portal.ebase.com (portal.ebase.com)... 193.17.27.15
Connecting to portal.ebase.com (portal.ebase.com)|193.17.27.15|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://portal.ebase.com/(_probe_)/overview/cache/down.pdf [following]
--2021-04-22 13:21:24--  https://portal.ebase.com/(_probe_)/overview/cache/down.pdf
Reusing existing connection to portal.ebase.com:443.
HTTP request sent, awaiting response... 302 Found
Location: https://portal.ebase.com/(e1)/overview/cache/down.pdf [following]
--2021-04-22 13:21:24--  https://portal.ebase.com/(e1)/overview/cache/down.pdf
Reusing existing connection to portal.ebase.com:443.
HTTP request sent, awaiting response... 302 Found
Location: https://portal.ebase.com/(e1)/error_410.htm [following]
--2021-04-22 13:21:24--  https://portal.ebase.com/(e1)/error_410.htm
Reusing existing connection to portal.ebase.com:443.
HTTP request sent, awaiting response... 200 OK
Length: 2988 (2,9K) [text/html]
Saving to: 'down.pdf'
 
down 100%[=================================================>]   2,92K  --.-KB/s    in 0s
 
2021-04-22 13:21:24 (2,32 GB/s) - 'down.pdf' saved [2988/2988]
 
down.pdf - естественно, никакой не pdf, а переименованный error_410.htm

Всего записей: 80 | Зарегистр. 03-08-2008 | Отправлено: 14:27 22-04-2021 | Исправлено: salzburger, 14:28 22-04-2021
ozr1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
salzburger, после залогинивания на сайте в Вашем интернет-браузере создаются кукисы (cookies) -- их следует выгрузить из интернет-браузера и передать через параметры в wget. После этого, скорее всего, всё заработает, как надо.

Всего записей: 319 | Зарегистр. 05-07-2015 | Отправлено: 17:24 22-04-2021
Inkservice

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго вренени...  помогите решить  
 есть в2в поставщика. Авторизуюсь там в этом Личн Каб есть кнопка Загрузить прайс в xlsx. Тыкаем и система секунд 20 крутит время и после выпадает окошко с предложением куда сохранить этот файлик.  Вот этот момент можно автоматом скачивать?  пытался сделать через wget  не получилось... слабоват я в нем))

Всего записей: 18 | Зарегистр. 23-04-2021 | Отправлено: 10:49 23-04-2021
salzburger

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ozr1, спасибо за совет, но, увы, не помогло Я сохранил куки для этой страницы после логина, попробовал так:
 
wget -qO- --load-cookies cookies_ebase.txt https://portal.ebase.com/(e27)/overview/cache/???.pdf
 
и выдалось содержимое error_410. Попробовал без ключа -qO- и в результате снова "липовый" pdf. Может, у кого-то есть еще идеи?
 
Добавлено:
Получилось скачать с помощью curl - естественно, с кукисами. ozr1, Вам еще раз большое спасибо!

Всего записей: 80 | Зарегистр. 03-08-2008 | Отправлено: 11:27 23-04-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