Страница 93 / 118

Wget: [Назад] 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 [Вперед]

GaDiNa



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

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

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

 
Где взять.
Под GNU — уже стоит. Под FreeBSD — есть в портах. Под [Mac] OS X — собрать ванильный.  
Под Windows есть варианты: 0) Cygwin,  1) GNUWin32 (учитывайте зависимости), 2) Wget + OpenSSL by GetGnuWin32, 3) by Bart Puype  4) by osspack32, 5) by Alex_Piggy, 6) 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 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) и многими другими протоколами на более низком уровне.
 
Разное.
GUI для Wgetа
 

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

Всего записей: 1503 | Зарегистр. 17-06-2003 | Отправлено: 12:39 08-11-2003 | Исправлено: VictorVG2, 22:57 06-01-2016
D1D1D1D

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

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

Редактировать | Цитировать | Сообщить модератору
Добавьте, пожалуйста, в шапку в вариант 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.

Отправлено: 22:33 17-02-2014
Victor_VG

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

Отправлено: 04:46 18-02-2014
Skif_off

Редактировать | Цитировать | Сообщить модератору
Victor_VG

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

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

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

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

Отправлено: 08:28 18-02-2014
Pasha_ZZZ



Silver 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

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

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

Отправлено: 09: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. Шапка изменена. #

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

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

Отправлено: 11: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.

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

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 дописывалось "на лету", без необходимости ожидания окончания загрузки? Как не редактировал, не вытанцовывается.
 

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

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

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

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 там не. Может в этом дело?

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

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

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

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

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

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

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 15:58 18-02-2014 | Исправлено: D1D1D1D, 16: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 Пишет сразу в файл. Много быстрее работает.
Подробнее...

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

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

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

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

Отправлено: 16:27 18-02-2014
D1D1D1D

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

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

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-ти мб?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 01:38 19-02-2014 | Исправлено: D1D1D1D, 01: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

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

Сохранено: 09.06.2016 19:46:43 (c) xForumSaver