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



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


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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 14:56 27-08-2015 | Исправлено: ASE_DAG, 15:00 27-08-2015
Pasha_ZZZ



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

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 15:18 27-08-2015
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ, о! Там все много круче и по этой части в том числе: «Великая китайская противопожарная стена» свои подложные сертификаты может подписывать китайским национальным корневым, что установлен как доверенный на большинстве систем по всему миру (и на моей, и уверен, что на вашей в том числе):
 
/usr/share/ca-certificates/mozilla$ ls China* CN*
China_Internet_Network_Information_Center_EV_Certificates_Root.crt  CNNIC_ROOT.crt

 
Так что отключай проверку сертификата / не отключай — все едино, для не знающего про эту подлянку пользователя все пройдет незамеченным. Имейте в виду, если поедете в Китай.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:06 27-08-2015 | Исправлено: ASE_DAG, 19:08 27-08-2015
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
 
По какой причине, при закачке со страницы приведенным ниже кодом, два основных JPG-изображения со страницы не скачиваются? —

Код:
 
wget_ruboard\wget.exe --user-agent="Mozilla/5.0 (Windows NT 5.1; rv:26.0) Gecko/20100101 Firefox/26.0 SeaMonkey/2.23" "https://blogs.yandex.ru/search.xml?text=author%3D%22smorodinov%22&holdres=mark&age_filter=on&ft=blog&full=1&p=4"  -HEkp -nc -nd -e robots=off -R "*.js" -P "smorodi2222"
 

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 14:22 28-08-2015 | Исправлено: D1D1D1D, 14:23 28-08-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
D1D1D1D
 
На сервере может просто стоять блокировка копирования. Специально чтобы люди заглядывали на страницу.

Отправлено: 14:27 28-08-2015
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, D1D1D1D
Не знаю.  wilmot01.jpg  wilmot02.jpg  скачиваются. Смотрите debug log (-d -o log). Мой лог для сравнения.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 16:39 28-08-2015
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
 
Перекачал Вашу версию из шапки, перепроверил, но всё равно все четыре JPG-файла у меня пропускаются. Может, это что-то системное, XP SP2 например?))

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 19:41 28-08-2015
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
D1D1D1D
Может быть. А может и не быть. Поэтому я дал свой лог (в котором все файлы закачиваются) и предложил посмотреть что отличается в Вашем. Просто ищете/смотрите по имени файла.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 19:47 28-08-2015
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
А, ясно. Отличие оказалось разительное: мой в два раза меньше по размеру — http://rghost.ru/8VdShHK6z

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 20:23 28-08-2015
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
D1D1D1D
Прошу прощения, я допустил ошибку - не удвоил проценты в bat-файле (запускал из командной строки и не проверив, сбросил в bat.). Обновил архив с логом. Пожалуйста, попробуйте еще раз.
PS. А Вы запускаете из bat или из командной строки? Может у Вас то же самое?

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 20:48 28-08-2015
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Точно, скачалось! Большое спасибо! Да, из bat запускал. Выходит, в нём в ссылках символы процента всегда надо удваивать?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 21:48 28-08-2015 | Исправлено: D1D1D1D, 21:49 28-08-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
D1D1D1D
 
Всегда. Это называется "экранированием спецсимволов" и нужно чтобы не путать параметры с переменными среды.

Отправлено: 22:21 28-08-2015
D1D1D1D

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

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 22:42 28-08-2015
vcrank

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

Цитата:
wget --post-data='AUTH_FORM=Y&USER_LOGIN=ЛОГИН&USER_PASSWORD=ПАРОЛЬ&Login=Войти' \ --save-cookies=my-cookies.txt --keep-session-cookies \ http://staten.ru/?login=yes -t1 -nd -N -np -erobots=off http://staten.ru/user/download/price_xls/

Судя по коду там в самом начале надо видоизменить отправку запроса на

Цитата:
wget --post-data='backurl=/&AUTH_FORM=Y&....

В любом случае получаю ошибку

Цитата:
wget: отсутствует URL
Использование: wget [ПАРАМЕТР]... [URL]...
 
Дополнительные параметры выводятся по команде <wget --help>.
"USER_LOGIN" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"USER_PASSWORD" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"Login" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

 
либо

Цитата:
"AUTH_FORM" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
...

Всего записей: 702 | Зарегистр. 24-10-2005 | Отправлено: 07:06 29-08-2015
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, vcrank
Систему указывайте...  В Win cmd одиночные кавычки ничего не экранируют (амперсанд должен быть экранирован как спецсимвол). И обратный слеш в конце строки - это экранирование перевода строки. Вместо него можно поставить циркумфлекс (если нужно для облегчения читаемости).
wget --post-data="AUTH_FORM=Y&USER_LOGIN=ЛОГИН&USER_PASSWORD=ПАРОЛЬ&Login=Войти"  --save-cookies=my-cookies.txt --keep-session-cookies  "http://staten.ru/?login=yes" -t1 -nd -N -np -erobots=off "http://staten.ru/user/download/price_xls/"

Или же попробовать закинуть POST в URL
wget  --save-cookies=my-cookies.txt --keep-session-cookies  -t1 -nd -N -np -erobots=off "http://staten.ru/?login=yes&AUTH_FORM=Y&USER_LOGIN=ЛОГИН&USER_PASSWORD=ПАРОЛЬ&Login=Войти" "http://staten.ru/user/download/price_xls/"

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 08:21 29-08-2015 | Исправлено: Alex_Piggy, 08:25 29-08-2015
vcrank

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Был невнимателен при просмотре полей формы
Рабочие параметры получились такие:

Цитата:
wget --post-data="backurl=/&AUTH_FORM=Y&TYPE=AUTH&USER_LOGIN=ЛОГИН&USER_PASSWORD=ПАРОЛЬ&Login=Войти"  --save-cookies=my-cookies.txt --keep-session-cookies  "http://staten.ru/?login=yes" -t1 -nd -N -np -erobots=off "http://staten.ru/user/download/price_xls/"

Всего записей: 702 | Зарегистр. 24-10-2005 | Отправлено: 16:55 29-08-2015
srkr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно скачать целиком тему с vk.com. Страниц очень много. Можно бы создать bat-файл - на каждой строке скачка отдельной страницы темы. Есть доп условия для задачи - не хочу регаться на vk.com. Если в браузере открыть отдельную страницу темы, то появлется окошко с предложением задать страну и город. Страна "Россия" у меня подставляется автоматически. Если задать еще и город, пусть и не свой, дальше я могу спокойно читать страницу темы, сохранить ее со всеми картинками, css-, и js-файлами. Могу переходить на другие страницы - при этом окно больше не выскакивает. Можно даже не подставлять город, а просто закрыть это окно. Но при переходе на другую страницц, оно появляется снова.
 
Как я понял, данные окна запомнились в cookies браузера. Или нет? Может быть эти cookies можно как-то подсунуть wget-у?
 
Или может быть есть другой способ?

Всего записей: 48 | Зарегистр. 14-12-2009 | Отправлено: 17:24 13-09-2015 | Исправлено: srkr, 17:26 13-09-2015
chAlx

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

Цитата:
Или может быть есть другой способ?

А что такое "тема с vk.com"? ;) Да ещё и многостраничная. Я тоже не хочу регаться, чтобы это выяснить -- нужен пример.
 
Из способов скорее всего самый прямой -- использование API Вконтактика.

Всего записей: 1490 | Зарегистр. 19-03-2003 | Отправлено: 21:19 13-09-2015
srkr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь я ввел в заблуждение себя и остальных может быть.

Цитата:
Если в браузере открыть отдельную страницу темы, то появлется окошко с предложением задать страну и город. Страна "Россия" у меня подставляется автоматически. Если задать еще и город, пусть и не свой, дальше я могу спокойно читать страницу темы, сохранить ее со всеми картинками, css-, и js-файлами. Могу переходить на другие страницы - при этом окно больше не выскакивает. Можно даже не подставлять город, а просто закрыть это окно. Но при переходе на другую страницц, оно появляется снова.

Так сайт ведет себя, если ты зареган, но невозможно узнать-понять из какого ты города-страны. Я зашел на vk.com и оказалось, что как-то я уже залогинился там. Сессия была запомнена. Когда я вышел, то темы читались постранично безо всяких выскакивающих окошек. Но вегет их не скачивает.

Всего записей: 48 | Зарегистр. 14-12-2009 | Отправлено: 02:08 14-09-2015
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
srkr, понятия не имею, о чем речь, но дались вам вообще эти «окошки», чего вы тут про них распинаетесь?

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 04:50 14-09-2015
Открыть новую тему     Написать ответ в эту тему

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