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

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

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

Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 23:44 17-02-2014
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добавьте, пожалуйста, в шапку в вариант 4) by osspack32:
wget-1.15 (with openssl 1.0.1f, pdf manual, wget.ini sample, locales and ca certificate)
Почему-то в этот раз не сжато UPX. Alex_Piggy, а с какими параметрами вы жмете? Или достаточно просто кинуть файл на upx.exe и дефолтного будет достаточно? Получается 597 кб, а ваш весит 617.

Всего записей: 5716 | Зарегистр. 28-01-2008 | Отправлено: 00:33 18-02-2014
Victor_VG



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Skif_off
 
Ставим: upx --ultra-brute wget.exe , ждём, на выходе бинарник минимального размера. У
 Alex_Piggy гранаты иной системы - тут 1.15.0, у него.1.15.3.

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

Всего записей: 23422 | Зарегистр. 31-07-2002 | Отправлено: 06:46 18-02-2014
Skif_off

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

Цитата:
--ultra-brute

Т.е. фиолетово? Тогда жмакну дефолтными параметрами.

Цитата:
у него.1.15.3

В репозитории нашел инфу о 1.15 и все, крайние правки датируются 2014.02.06. Или своя нумерация?

Всего записей: 5716 | Зарегистр. 28-01-2008 | Отправлено: 10:28 18-02-2014
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Skif_off
Цитата:
крайние правки датируются 2014.02.06
Так посмотри на эти правки после релиза 1.15, оно тебе надо:
  • wget: move --version copyright year out of the localized
  • configure.ac: update copyright years
  • Turn --debug into no-op if compiled without debugging support
  • Don't use --debug in Test--post-file.px
  • Introduce --no-config. The wgetrc files will not be read
  • NEWS: placeholder for the new release

  • Всего записей: 7896 | Зарегистр. 11-03-2002 | Отправлено: 10:43 18-02-2014 | Исправлено: Pasha_ZZZ, 10:44 18-02-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Pasha_ZZZ
    Не, не надо я не понял, почему 1.15.3?

    Всего записей: 5716 | Зарегистр. 28-01-2008 | Отправлено: 11:16 18-02-2014
    Alex_Piggy

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

    Цитата:
    В репозитории нашел инфу о 1.15 и все, крайние правки датируются 2014.02.06. Или своя нумерация?... я не понял, почему 1.15.3?

    Нумерация из git-репозитория. Если не-метка, то добавляется точка, затем номер коммита после последней метки, его SHA и "dirty".
    1.15.3-ae41-dirty - не Wget 1.5.3, а, скорее 1.5.0.3? - третье изменение после версии 1.5
    В ветке origin/master сейчас последнее - Wget 1.5.6-d68295
    Размер другой из-за немного другой среды + у меня включена поддержка pcre. upx --ultra-brute.
    PS. Шапка изменена. #

    Всего записей: 1657 | Зарегистр. 07-08-2002 | Отправлено: 11:34 18-02-2014 | Исправлено: Alex_Piggy, 11:35 18-02-2014
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
     
    UPX с опцией --ultra-brute пройдётся по бинарнику семьдесят два раза подбирая лучшие для него параметры LZMA-сжатия, расплатой за сжатие бинарника любым компрессором станет увеличение используемого процессом ОЗУ. Для UPX это обычно дополнительные 5 - 7 Мб на каждый процесс, для других смотреть надо. В итоге набегает...

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

    Всего записей: 23422 | Зарегистр. 31-07-2002 | Отправлено: 13:28 18-02-2014
    DOS_Acertann

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите, пожалуйста. Есть страница (atsenergo.ru/results/market/svnc/svnc_month/index.htm?period=012014&ftempl=3&step=1&published=20140204)
     
    Мне нужно автоматизировать выкачивание файлов с этой страницы, но возникла проблема - wget не идет по ссылке дальше вопросительного знака, и скачивает только саму страницу index.htm без продолжения.
     
    Используемая строка
    wget-1.15>wget -P D:\GP_price -r -l 1 -nd -A xls --content-disposition "http://www.atsenergo.ru/results/market/svnc/svnc_month/index.htm?period=012014&ftempl=3&step=1&published=20140204"
     
    Используемая ОС - Windows.

    Всего записей: 24 | Зарегистр. 23-01-2006 | Отправлено: 13:35 18-02-2014
    D1D1D1D

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wget.exe -i file.txt -O - | split -b10m -d -a3 - file  
     
    Допустимо ли изменить такой код, используя переменную даты-времени
     
    "%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%.htm"
     
    вместо имени-номера, чтобы расширение htm дописывалось "на лету", без необходимости ожидания окончания загрузки? Как не редактировал, не вытанцовывается.
     

    Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 13:52 18-02-2014 | Исправлено: D1D1D1D, 13:54 18-02-2014
    DOS_Acertann

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    D1D1D1D
    Попробуй ключ -F
    Цитата с мана: " -F,  --force-html          считать, что входной файл - HTML."
    По факту - как раз расширение и дописывает.

    Всего записей: 24 | Зарегистр. 23-01-2006 | Отправлено: 14:05 18-02-2014 | Исправлено: DOS_Acertann, 14:10 18-02-2014
    D1D1D1D

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DOS_Acertann
    Видимо из-за связки со split  не срабатывает.
     
    Добавлено:
    DOS_Acertann
    кстати, если заглянуть в HTML код приведенной страницы (atsenergo.ru/results/market/svnc/svnc_month/index.htm?period=012014&ftempl=3&step=1&published=20140204) — файлов xls там не. Может в этом дело?

    Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 14:20 18-02-2014
    oxiohi

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

    Всего записей: 7 | Зарегистр. 17-02-2014 | Отправлено: 14:37 18-02-2014
    DOS_Acertann

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    D1D1D1D
    А без split работает?
     
    Не очень важно. Там рекурсия выставлена по вложенным ссылкам, а вложенные ссылки как раз и ведут на xls'ы. Но он бы хоть что-нибудь качал! Почистить от лишнего потом не проблема.
    Другой код, в ссылке без вопросительного знака, но с авторизацией, подцеплением кукисов и по SSL качает все как положено - а тут просто не удается пройти дальше этого вопросительного знака. Пробовал его экранировать, пробовал другие версии wget, пробовал запустить wget под cygwin - толку ноль. В "сохраненных" только страница, на которую можно попасть по ссылке до вопросительного знака.

    Всего записей: 24 | Зарегистр. 23-01-2006 | Отправлено: 16:01 18-02-2014
    D1D1D1D

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DOS_Acertann
    Без split работает.
     
    По поводу ссылки  
     
    atsenergo.ru/results/market/svnc/svnc_month/index.htm?period=012014&ftempl=3&step=1&published=20140204
     
    имелось виду, что если перейти по ней в браузере и посмотреть HTML-код, то файлов XLS в нем не окажется, т.к. видимо они подгружаются из скриптов.

    Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 17:58 18-02-2014 | Исправлено: D1D1D1D, 18:02 18-02-2014
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    DOS_Acertann
    Это проблема не в Wget. Данные формируются java скриптом. http://www.atsenergo.ru/idc/groups/ats_web_asset/documents/web_asset/js_svnc_month.js. Вам нужно использовать что-то что может обработать java. Временно - посмотрите VBS скрипт. Подробнее...
    oxiohi
    Посмотрю. Пока попробуйте версию 1.11.4
     
    D1D1D1D
    Я не знаю такого метода. Хотя... тот же VBS... Только будет работать +- лапоть. Подробнее...  
    upd Пишет сразу в файл. Много быстрее работает.
    Подробнее...

    Всего записей: 1657 | Зарегистр. 07-08-2002 | Отправлено: 18:04 18-02-2014 | Исправлено: Alex_Piggy, 00:05 19-02-2014
    D1D1D1D

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

    Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 18:17 18-02-2014
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    D1D1D1D
     
    В лоб такие вещи не срабатывают - скрипт динамически читает линк из некой БД на сервере, а значит нужен внешний имитатор его операций. К примеру для Зверя есть FlashGot именно он парсит скрипы вычисляя текущие прямые лики, и в нём это делает flashgot.jar обрабатываемый в контексте системной Java VM, а вам придётся эту работу самому делать имитируя браузер - в скрипте наверняка на это дело проверки стоят...

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

    Всего записей: 23422 | Зарегистр. 31-07-2002 | Отправлено: 18:27 18-02-2014
    D1D1D1D

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

    Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 19:01 18-02-2014
    D1D1D1D

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex_Piggy
    Заметил update, спасибо! Правильно ли понял: последний код (использую его так — wget -i lnk.lst -O- | cscript scriptsplit.vbs), эффективней первого — wget.exe -i file.txt -O - | split -b10m -d -a3 - file? И скажется ли на его производительности дополнительное повышение значения квоты (из VBS-файла), скажем, до 20-ти мб?

    Всего записей: 706 | Зарегистр. 05-04-2010 | Отправлено: 03:38 19-02-2014 | Исправлено: D1D1D1D, 03:41 19-02-2014
    Открыть новую тему     Написать ответ в эту тему

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