Страница 53 / 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
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Брррр. Системная ошибка. Перезагрузка.
 
@Victor_VG

Цитата:
OpenSSL  другие либы не компилятся в самодостаточный бинарник, а просто к нему линкуется их интерфейс

К сожалению, не уверен. Во всяком случае при компиляции wget у меня было проблемой получить именно динамический а не статический линк (уже не скажу точно, но кроме -lssl (по умолчанию)  требовались ключи -lssl32 и  -lebay32). А двухметровый WGet (или метровый с UPX) это даже не смешно. Хотя ... может как stand-alone для чужого компа и удобно.
 

Цитата:
вариант бинарника про который идёт речь как помню вообще вызовов OpenSSL в импорте не имеет, и класть рядом с ним эти библиотеки ... бесполезно

Верно, бесполезно. Ведь функции уже включены в бинарник (речь идет про сборку Берта, верно?). Только что проверял _https://_ подхватывается и закачивается. И если распотрошить exe-шник, то куски OpenSSl библиотек присутствуют...
 
Не знаю в чем дело. Буду проверять, почему оно  у меня работает .

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 22:54 02-06-2011
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
 
Сиё лучше. Тогда может попробуем ещё и другую вещь собрать? А то пока авторы раскачаются. Идею в ПМ положил.

Отправлено: 00:56 03-06-2011
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, помогите скачать cookies с сайта odnoklassniki.ru
Делаю так:

Код:
wget --user-agent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --save-cookies cookies.txt --post-data "st.email=логин&st.password=пароль" хттп://www.odnoklassniki.ru/dk?cmd^=AnonymLogin^&amp^;st.cmd^=anonymLogin^&amp^;tkn^=2933 -O-

 
Но не выходит... что может быть не так?
 
 

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 11:16 09-06-2011 | Исправлено: XXXXL, 11:17 09-06-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
> не выходит
Что у куда не выходит?
 
Циркумфлекс — это в вашей оболочке экранирующий символ? Почему было не забрать в кавычки как пост-данные?
А амперсанд вы для кого записали в виде HTML-мнемоники?

----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 13:21 09-06-2011
XXXXL



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

Цитата:
Что у куда не выходит?  

Не скачивает куки где аккаунт авторизован.
 
Поправил так:

Код:
wget --user-agent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --save-cookies cookies.txt --post-data "st.email=логин&st.password=пароль" "http://www.odnoklassniki.ru/dk?cmd=AnonymLogin" -O-  

Но тоже самое, в cookies.txt  только одна строка:
.odnoklassniki.ru    TRUE    /    FALSE    1307611134    CHECK_COOKIE    true

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 15:27 09-06-2011
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, XXXXL
Вариантов пока вижу два:
1. Добавьте команду --keep-session-cookies. RTFM
2. Не полностью заполнена форма для отправки. Дложно быть что-то вроде

Код:
 
wget --user-agent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --keep-session-cookies --save-cookies cookies.txt --post-data "st.email=ЛОГИН&st.password=ПАРОЛЬ&st.remember=checked&st.fJS=enabled&st.st.screensize=800x600&st.st.browserSize=1000&st.st.flashVer=10.2&st.redirect=&st.posted=set" "хттп://www.odnoklassniki.ru/dk?cmd=AnonymLogin&amp;st.cmd=anonymLogin&amp;tkn=8253"
 

Вроде все поля с нужными значениями, но не уверен. Не знаю что дает функция GetSwfVer() в Java.
К сожалению, не имею аккаунта в однокласниках, поэтому проверить не могу. На вконтакте нужно полностью перебивать форму.
 
PS "хттп://www.odnoklassniki.ru/dk?cmd=AnonymLogin&amp;st.cmd=anonymLogin&amp;tkn=8253" обязательно в двойных кавычках! Похоже в адресе передается еще один кусок формы.
 
Добавлено: Как вариант, если ничего не получится с --save-cookies  - залогинится через броузер, затем экспортировать "cookies":
Для FireFox есть addon "Export cookies" (или "AllCookies"?)- выдает cookies.txt для Wget (не проверял)
В IE - "файл"> "импорт и экспорт"> "экспорт файлов "cookies"" (работает)
В Opera не знаю. Разве что вручную перенабить. (не проверял)  

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 02:39 10-06-2011 | Исправлено: Alex_Piggy, 15:56 10-06-2011
XXXXL



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

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 15:38 11-06-2011
mgarmonov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите пожалуйста, как скачать сайт. Доступ к файлам только после ввода логина и пароля , которые у меня есть. Пробовал разные менеджеры закачек, вводя в настройках логин и пароль, но качалась только ознакомительная часть(для незарегистрированных пользователей)???????

Всего записей: 13 | Зарегистр. 30-07-2008 | Отправлено: 12:51 21-06-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mgarmonov
> Пробовал разные менеджеры закачек, вводя в настройках логин и пароль,  но качалась только ознакомительная часть(для незарегистрированных пользователей)???????
Это вопрос?
 
Положите куда-нибудь файл с нужными куками в т.н. нетскейповском формате (проще всего этот файл получить при помощи расширения Export Cookies — лишние куки мешать не будут).
 
А среди ключей запуска сабжа укажите --load-cookies FILE, где FILE — имя оного файла.

----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 13:08 21-06-2011
mgarmonov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ничего не получилось. Сделал как и сказали, правда работаю через winwget.     сайт : http://www.webvidal.ru/Default.aspx?ReturnUrl=%2fFolder11%2fAlf_Drag_new.aspx - где авторизируешься , после нажатия http://www.webvidal.ru/Alf_Drug_new.aspx - если прошла регистация первым препаратом должен быть на букве А- А.Т.10.

Всего записей: 13 | Зарегистр. 30-07-2008 | Отправлено: 12:24 22-06-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mgarmonov
> Ничего не получилось.
«Ничего» — это как?
 
> Сделал как и сказали
Ну это я вам полной команды не привел, поскольку вопрос был общий.  
А если переходите к частному случаю, то приводите и отданную команду, и вывод отладки, и вообще все, что можете привести.
 
> http://www.webvidal.ru
У меня там нет аккаунта. И процедура его получения, как я понял, не вполне тривиальна. Поэтому ничего проверить не могу.

----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 13:29 22-06-2011
mgarmonov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ничего не получилось- ссылка на файл с кукисами не дает winwget качать полную версию сайта. по поводу аккаунта [email protected]\ mgarmonov на странице http://www.webvidal.ru/Default.aspx?ReturnUrl=%2fFolder11%2fAlf_Drag_new.aspx далее если все прошло -нажимаем препараты-алфавитный указатель -  или меняем в строке Alf_Drag_new.aspx на Alf_Drug_new.aspx первым препаратом должен быть на букве А- А.Т.10. А если после регистрации просто вставить ссылку , то все равно сокращенная версия, а не экспертная. Извините если получилось сумбурно, простокрыша плывет понемногу

Всего записей: 13 | Зарегистр. 30-07-2008 | Отправлено: 14:08 22-06-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mgarmonov
Окромя пары логин/пароль я из вашего сообщения ничего понял.
 
А дело такое: навигация по каталогу там реализована действительно аццки — при клике на кнопку отправляется POST-запрос, в котором ценной информации — параметр Button{0..27} (да, меняется имя параметра!) и еще 10 Кб (!!!) какого-то мусора.
 
У меня к вам рацпредложение: поскольку нумерация в ссылках вида http://www.webvidal.ru/Folder11/DescrDrug.aspx?ID=9000 сплошная, загрузить только описания препаратов простым перебором всех ID.  
У них, правда, не возвращается ошибка, если препарата за таким-то номером не существует (странно было бы от них ожидать этого после знакомства с их реализацией навигации по каталогу, правда?). Можно было бы ориентироваться на содержимое ответа, но я вам максимальный ID просто скажу: 9508.
 
Так что что-нибудь типа:
$ for i in {1..9508}; do wget -E --load-cookies cookies.txt "http://www.webvidal.ru/Folder11/DescrDrug.aspx?ID=$i"; done
и поехали.
 
Как вам на Винде сделать, думаю сообразите.

----------
Спроси, где спросить!

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 15:35 22-06-2011 | Исправлено: ASE_DAG, 15:36 22-06-2011
mgarmonov

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

Всего записей: 13 | Зарегистр. 30-07-2008 | Отправлено: 18:55 22-06-2011
alexbogo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите вытащить недостающие линки
Подробнее...
 
или ссылки на недостающие картинки
Подробнее...
или тыкните в ветку форума, где помогут/научат найти подобное.
Спасибо!

Всего записей: 212 | Зарегистр. 09-12-2001 | Отправлено: 10:07 27-06-2011 | Исправлено: alexbogo, 02:06 28-06-2011
KOXAH

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

 
Нужно скачать только самый новый файл, т.е. по дате создания файла (т.к. имена файлов меняются), говорю wget такое:
 

Код:
wget -a D:\antivir\log.txt -r -nd -A *.exe ftp://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/avptool11/ -P d:\antivir

 
в лог пишет такое:
 

Код:
--2011-07-12 05:29:51--  ftp://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/avptool11/
           => `d:/antivir/.listing'
Распознаётся devbuilds.kaspersky-labs.com... 95.167.139.3
Устанавливается соединение с devbuilds.kaspersky-labs.com|95.167.139.3|:21... соединение установлено.
Выполняется вход под именем anonymous ... Выполнен вход в систему!
==> SYST ... готово.  ==> PWD ... готово.
==> TYPE I ... готово.   ==> CWD /devbuilds/AVPTool/avptool11 ... готово.
==> PASV ... готово.  ==> LIST ... готово.
 
     0K .                                                       753K=0,002s
 
2011-07-12 05:29:53 (753 KB/s) - `d:/antivir/.listing' сохранён [1404]
 
Удалён `d:/antivir/.listing'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_05_11.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_07_11.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_09_14.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_11_12.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_13_17.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_15_15.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_17_34.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_19_12.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_21_12.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_11_23_12.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_12_01_14.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_12_03_12.exe'.
Отклоняется `setup_11.0.0.1245.x01_2011_07_12_05_12.exe'.

 
Ничего качать не хочет. Подскажите пожалуйста, где ошибка?

Всего записей: 120 | Зарегистр. 13-06-2005 | Отправлено: 05:52 12-07-2011
Victor_VG

Редактировать | Цитировать | Сообщить модератору
KOXAH
 
я бы лично сначала там ls -fRr там бы вызвал, а потом бы её выдачу парсил выкидывая имена владельце и права доступа по регулярке grep-ом, ну а его выдачу бы в лист закачек, но это варинт с UNIX и sh как шелл, а воторой вариант, мне кажется он попроще будет - это воспользоваться связкой Take Ckmmand + Wget, но TCMD штука платная. Просто из всех доступных для Windows нативных командных процессоров этот самый мощный и умеет используя собственный язык чудеса делать, или третий вариант решения - nnCron с плагинами и вызов wget как программы по событию "если файлы на сервере изменились, то..." - крон такие задачи решает быстро и красиво, а кого вызвать ему не важно - вызовет, отработает задачу и напоследок завершит процесс выбранного приложения спам коли то этого само не сделало.
 
Ну и по теме гляньте - не помню точно где здесл или в теме по Sysinternals Suite, но зимой я лично приводил командную строку для выкачки с SystemInternals полного пакета SysinternalsSuite.zip - этот так же обновляется частенько и его проще роботом скачивать, но иногда обновление может и не пройти, а почему до сих пор не ясно. Выглядит это просто как сбой обновления. Удаляешь файл или переименовываешь - проходит "на ура, а нет облом и по полной. Обычно это один случай из сотен, но имеет место быть.

Отправлено: 07:15 12-07-2011
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, KOXAH
 
Попробуйте bat-файл с чем-то вроде

Код:
 
set URL=ftp://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/avptool11/
wget -c --spider -a d:\antivir\log.txt -P D:\antivir --no-remove-listing %URL%
FOR /F "tokens=9 delims= " %%A IN (D:\antivir\.listing) DO set NAME=%%A
wget -c -a d:\antivir\log.txt -P D:\antivir %URL%%NAME%  

Он должен скачать последний файл из списка FTP.
К сожалению, сейчас на 98, поэтому проверить код не могу.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 09:03 12-07-2011
KOXAH

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

Всего записей: 120 | Зарегистр. 13-06-2005 | Отправлено: 10:31 12-07-2011
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KOXAH
Писал под себя, качает 9 и 11 версию, удаляет старые (сравнивает по дате и времени в имени файла). Скрипт положить в папку с wget.exe, тут же создать папку AVPTool.
ZIP в UUE

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 19:16 13-07-2011 | Исправлено: Pasha_ZZZ, 19:17 13-07-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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:43:32 (c) xForumSaver