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

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

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

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 бит отдельные пакеты).
 
Литература.
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’а
 

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

Всего записей: 1528 | Зарегистр. 17-06-2003 | Отправлено: 13:39 08-11-2003 | Исправлено: mithridat1, 08:56 13-02-2019
trion1

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG, для проверки в браузере кеш естественно очищался.
Как ни странно, но помог ключ -t 45 - количество попыток скачать просто увеличил.
А сам сайт внутри корпоративной сетки, неожидал, что проблемы с отдачей могут возникнуть.

Всего записей: 1543 | Зарегистр. 15-03-2006 | Отправлено: 09:12 28-12-2016
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trion1
 
Ну, тут стоит с местными технарями поговорить - это у них сидит ошибка. По идее такого - скачивать с LAN с полусотни попыток быть не должно...

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 23550 | Зарегистр. 31-07-2002 | Отправлено: 10:20 28-12-2016
trion1

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Технарям лень разбираться, тем более для них все в норме - в браузере все грузится.
 
Порывшись немного в логах wget, обнаружил, что html/txt страницы, формируясь серверными скриптами на лету, отдаются, кроме всех прочих, с параметром "Length: unspecified [text/html]" в заголовке, и загружаются полностью.
 
В тоже самое время графика, флеш, архивы и т.п., отдаются с указанием конкретного размера, при этом, воспользовавшись --debug, оказалось, что для ссылок на эти файлы wget частенько читает только header, получает длину, сообщает "connection closed", и файл на диске не создает.
Если указать опцию -O "Имя_файла.ext", то на диске создается файл нулевого размера, и опять "connection closed". А с опцией --ignore-length файл создается, но размером, видимо в один или несколько первых чанков, и опять "connection closed".
 
И понять, что wget недокачал, сразу невозможно - статус по окончании работы что для загрузившейся html`ки, что для неудачного запроса графики и т.п. какой-то одинаковый и "сумасшедший", типа -785779854.
 
По идее, если продолжать пробовать в этом направлении, надо проверять размер записанного на диск файла с размером из заголовка, полученного wget`ом, и при несовпадении, запускать wget заново с опцией докачки --continue.
xp sp3 bat wget 1.18 -
 
Будем еще пробовать WSH с каким-нибудь MSXML2.ServerXMLHTTP или ему подобным...

Всего записей: 1543 | Зарегистр. 15-03-2006 | Отправлено: 22:19 28-12-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trion1, все эти ваши рассказы выглядят весьма занимательно.  Жаль, что вы не хотите ни с кем поделиться возможностью поучаствовать.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 23:51 28-12-2016
trion1

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поделиться??!!
Сайт в корпоративной сети, внутри предприятия, выхода в инет напрямую нет (и времени его искать тоже), да ещё за этим следят строгие, но ленивые админы...
 
Вопрос и надежда на его решение была в том, что кто-то уже сталкивался с подобным поведением wget.
Видимо, это впервые, всё когда-то бывает впервые...
 
К общей неудаче в попытке использования wget, оказалось, что в настройках некоторых параметров отсутствует гибкость.
Так лог перезаписывается в файл опцией ‘-o logfile.txt’, для которой есть команда в файле конфигурации ‘logfile = file.txt’; для нескольких подряд загрузок есть логичная опция ‘-a logfile.txt’, когда всё дописывается в один единственный логфайл, однако, для файла конфигурации такой аналогичной команды нет. Приходится к каждой команде запуска wget добавлять одну и туже опцию, или копатся в нескольких файллогах, что бы только попытаться понять, что там wget делает при нескольких загрузках подряд.
 
Опция и команда файла конфигурации ‘--debug’(‘debug = on’) почему-то "ломают" загрузки следующие друг за другом из bat файла - без них файлы успешно загружаются, с ними только первый, и то не всегда.
 
Опция докачки ‘-с’ и количества попыток ‘-t 0’ тоже как-то не удалось использовать и совместить. Можно было бы предположить, что с ними wget будет докачивать файл, или остановится, если случиться “connection refused” или “not found”(404). Реально происходит остановка после первого же неудачного или удачного(ну это понятно) запроса.
При этом в логах даже в debug mode не видны ни докачка, ни сколько попыток wget сделал для загрузки файла, ни причины остановки, только "connection closed", то есть, если скачал - то всё OK, если не скачал, то также только запись про одну попытку, заканчивающуюся на строке: "Length:...". Единственно в логе удачной загрузки отражается progress indicator, и "File saved: Имя_файла.ext"
 
Можно предположить, что версия 1.18 какая-то неудачная (других не пробовал, да и времени уже/пока нет), или под win xp sp3 глюки у нее, или "руки кривые", хотя и старался и "с разных сторон", и "разными инструментами" "выпрямить для wget`а" , наверное, не дорос ещё или уже

Всего записей: 1543 | Зарегистр. 15-03-2006 | Отправлено: 09:58 29-12-2016
Garryson

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG, спасибо за подсказку с robots.txt.
Очень помогли.
 
Теперь новые непонятки.  
Скачиваю сайт с таким набором:
wget --restrict-file-names=nocontrol,windows -r -l 7 -p -E -nc -e robots=off http://***.ru/
Т.е. без ключа -k.
А ссылки на внутренние страницы получаются такого типа: file:///C:/***
Почему? Ведь должны же быть http://***
 
 

Всего записей: 6 | Зарегистр. 08-11-2016 | Отправлено: 23:34 29-12-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garryson
> Ведь должны же быть http://***
 
Разве?  А по-моему, должны быть как в оригинале.
 
> Почему?  
 
По мере убывания вероятности:
 
— Опция --convert-links указана где-то еще: в ~/.wgetrc, alias’ом и т. д.
 
— Это неправда.  Вы что-то путаете.
 
— Это ошибка в программе.


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:17 30-12-2016
Garryson

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG, спасибо. И с этим вроде разобрался.
Теперь не могу понять, почему у одного из сайтов скачивается только index.html  
Да и то файл какой-то корявый на выходе.  
 
Качаю с таким набором:
wget --restrict-file-names=nocontrol,windows -r -l 7 -p -E -nc -e robots=off
 
Проблемный сайт mesjachnie.ru

Всего записей: 6 | Зарегистр. 08-11-2016 | Отправлено: 10:44 06-01-2017
Baton34V

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как сделать чтобы wget в header не добавлял отсебятины (Accept: */*\r\n Accept-Encoding: identity\r\n), только то, что я явно указал в параметрах?

Всего записей: 305 | Зарегистр. 21-08-2009 | Отправлено: 22:31 06-01-2017
Dimsokolov

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если в текущей директории уже имеется файл с данным названием, можно ли сделать, чтобы wget не заменял его - отменял закачку, или предупреждал? Не нашёл подходящего ключа.

Всего записей: 131 | Зарегистр. 28-03-2009 | Отправлено: 18:26 14-01-2017
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dimsokolov
 
-nc, --no-clobber  :: пропускать загрузки, которые приведут к загрузке уже существующих файлов (и их перезаписи)
 
обе формы записи-nc | --no-clobber  равнозначны.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 23550 | Зарегистр. 31-07-2002 | Отправлено: 23:22 14-01-2017
septerrianin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уже который день попытки скачать версию от Alex_Piggy натыкаются на ошибку
"Error (429)
This account's links are generating too much traffic and have been temporarily disabled!"
 
Можно как-то на нормальный файлообменник перезалить?
Затрахала немного война с кириллистическими именами файлов в ссылках, а решение, походу, единственное.

Всего записей: 1 | Зарегистр. 15-01-2017 | Отправлено: 20:02 15-01-2017
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
septerrianin
 
wget_ruboard.zip (1.17.1.18-ffbd-dirty Ru-Board Variant для mingw32) x86. Сойдёт?

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 23550 | Зарегистр. 31-07-2002 | Отправлено: 20:24 15-01-2017
Dimsokolov

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Создал бат для проверки размера файла и даты модификации из ссылки буфера обмена. Параметры: --no-check-certificate --spider --server-response.  
Есть ли возможность выводить в консоль определённые строки, чтобы глаза не разбегались? Конкретно: Last-Modified:..." и "Length:..."

Всего записей: 131 | Зарегистр. 28-03-2009 | Отправлено: 13:36 31-01-2017
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Dimsokolov
Цитата:
wget ............ 2>&1|findstr /i /b "Last-Modified: Length:"

Всего записей: 8019 | Зарегистр. 11-03-2002 | Отправлено: 14:08 31-01-2017 | Исправлено: Pasha_ZZZ, 14:13 31-01-2017
trolltmn



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток коллеги, помогите несмышленному, Хочу пропарсить пост из варезника. как можно при помощи сабжа сохранить cookies с руборда. полдня убил но не могу добиться желаемого, куки сохраняются пустые, и все тут. Либо получаю 403 Forbidden

Всего записей: 503 | Зарегистр. 30-01-2008 | Отправлено: 15:39 03-02-2017
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
trolltmn
Ну например, шапка темы по 1С:
Цитата:
wget -O nul -U "Mozilla/5.0" --save-cookies=RB_cookies.txt --post-data="action=dologin&inmembername=<username>&inpassword=<password>&ref=http%3A%2F%2Fforum.ru-board.com%2F" --referer="http://forum.ru-board.com/misc.cgi?action=login" "http://forum.ru-board.com/misc.cgi"
wget -O 1C_head.html -U "Mozilla/5.0" --load-cookies=RB_cookies.txt "http://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=54137&limit=1"

Всего записей: 8019 | Зарегистр. 11-03-2002 | Отправлено: 16:41 03-02-2017
mleo

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GNU Wget 1.19
В новом выпуске:

Всего записей: 4335 | Зарегистр. 19-05-2004 | Отправлено: 21:20 03-02-2017 | Исправлено: mleo, 21:22 03-02-2017
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mleo
 
Там только базовые исходники. В GIMP 2.8.20 аналогично - в портах или бинарниках  пока нет, но анонс объявлен.

----------
Жив курилка! (Р. Ролан, "Кола Брюньон")

Всего записей: 23550 | Зарегистр. 31-07-2002 | Отправлено: 21:44 03-02-2017
mleo

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

Victor_VG
 
Я не обновляю его через бинарники, поэтому не проверял налчие на серверах. Стоит 1.16, собственно его хватает.
Да по GIMP видел вчера, но тоже не ковырял.

Всего записей: 4335 | Зарегистр. 19-05-2004 | Отправлено: 22:18 03-02-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

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

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru