Страница 102 / 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет!
 
Интересно, а можно настроить WGET так, чтобы скачивались ссылки, которые открывает «Tor Браузер»? Например: http://btdigg63cdjmmmqj.onion/top100.html

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 08:11 16-02-2015
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
Настройте сами wget на http-прокси,смотрящий в сеть TOR (Privoxy или встроенный в AdvOR) и проверьте.

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 08:30 16-02-2015
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посмотрел на примеры, описанные выше и вроде так это делается, но без результата —
 
wget -e "http_proxy=127.0.0.1:9150" -e "use_proxy=on" http://btdigg63cdjmmmqj.onion/top100.html
 
Что бы тут не так? Данные 127.0.0.1:9150 взяты из Браузера Tor.

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 03:41 17-02-2015
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D, 9150? А это не SOCKS, не?

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 04:23 17-02-2015
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
 
Точно, SOCKS. А что, сильно меняет дело?

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D, ну, как минимум, вы указали socks-proxy в графе для http-proxy. А вообще — да, сильно, сабж, кажется, вовсе не умеет в socks (или это его собирают без поддержки socksов?). curl умеет, по крайней мере в Дебиане.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 05:24 17-02-2015
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG, ясно. А в curl под Windows можно это провернуть?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 05:28 17-02-2015
mithridat1



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

Цитата:
9150? А это не SOCKS, не?

Вообще-то,в AdvOR встроенный прокси-сервер (по умолчанию порт 9050) с автоопределением

Цитата:
Socks4, Socks5, HTTP, HTTPS (autodetected)

 
Добавлено:

Цитата:
wget -e "http_proxy=127.0.0.1:9150" -e "use_proxy=on" http://btdigg63cdjmmmqj.onion/top100.html

У меня команда работает (через прокси AdvOR)
 

Цитата:
--2015-02-17 09:40:19--  http://btdigg63cdjmmmqj.onion/top100.html
Connecting to 127.0.0.1:9050... connected.
Proxy request sent, awaiting response... 200 OK
Length: 49849 (49K) [text/html]
Saving to: 'top100.html'
 
100%[======================================>] 49а849       110KB/s   in 0,4s
 
2015-02-17 09:40:20 (110 KB/s) - 'top100.html' saved [49849/49849]

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 08:24 17-02-2015 | Исправлено: mithridat1, 08:39 17-02-2015
D1D1D1D

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

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 10:33 17-02-2015
ndch

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

Цитата:
Сделал. Теперь думаю - это нужно или нет?  

 
О! Теперь пишет "WARNING: timestamping does nothing in combination with -O. See the manual for details." Бинарник который я запускал ранее так не ругается.
 
Файлу присваивается timestamp  с сервера, но файл скачивается каждый раз (хотя указан ключ -N).
 
Мне не принципиально чём скачивать, так что сейчас использую curl.

Всего записей: 4388 | Зарегистр. 31-08-2008 | Отправлено: 12:26 17-02-2015
prestigo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вопросик такой
 
нужно скачать из сайта только все файлы (на которые есть внутренние ссылки соотв.) из каталога имя-сайта.com/uploads/posts/
т.е. получить результат, как будто бы если бы сайт выкачался полность, а после этого все файлы, что не лежат в этом каталоге - просто удалили
( в идеале еще хотелось бы при этом не загружать все файлы из имя-сайта.com/uploads/posts/любое_имя_каталога/thumbs/ )
 
как можно сие передать параметрами для закачки?
 
ну и, так понимаю, что сабж по-прежнему не может брать только файлы, начиная с какой-то даты создания?..

Всего записей: 314 | Зарегистр. 03-09-2006 | Отправлено: 13:17 19-02-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
prestigo
 
А что, возможность задать относительный линк имя-сайта.com/uploads/posts/ упустили из виду?
 
Команда wget -nH --exclude-directories=thumbs --retry-connrefused -c  имя-сайта.com/uploads/posts/ будет работать в wget начиная с GNU Wget 1.12.1-devel . Далее пробуйте. Если нужна справка по ключам введите команду:
 
для Win: wget --help > wget.txt&&wget.txt
для UNIX: wget --help|ee

Отправлено: 03:00 22-02-2015
prestigo

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

Цитата:
Команда wget -nH --exclude-directories=thumbs --retry-connrefused -c  имя-сайта.com/uploads/posts/ будет работать в wget начиная с GNU Wget 1.12.1-devel .

 
спасибо но не работает так
дело в том что каталог имя-сайта.com/uploads/posts/ сам по себе недоступен - т.е. чтобы "взять" файлы из него, нужно плясать по всем ссылкам-файлам, начиная от корня сайта, НО - при этом сохранять только файлы, которые физически будут храниться в имя-сайта.com/uploads/posts/
(физически это - каталог с картинками галереи вордпресса, на самом деле)
 

Всего записей: 314 | Зарегистр. 03-09-2006 | Отправлено: 13:15 24-02-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
prestigo
 
Линк поправьте по месту. Я дал вам пример.

Отправлено: 14:54 24-02-2015
SurferNet



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите не разбирающемуся в скриптинге и написании батников, как реализовать следующее:
Есть локальный стрим, в виде http://10.10.10.10:8080/SampleStream
Качается любой http-качалкой.
Нужен какой-то батник, который будет проверять(допустим, с периодичностью 1 минута), есть ли там стрим, то начинать закачку. Соответственно если закачка идёт, то попытки прекратить на это время. Файл называть как-нибудь уникально, например с датой создания, дабы избежать перезаписи.

Всего записей: 144 | Зарегистр. 14-09-2005 | Отправлено: 12:04 02-03-2015
Sish



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья!
 
Стоит простая задача: есть локальная папка на компе (D:\update), есть папка с таким же названием на ftp-сервере.
 
Помогите, пожалуйста, с батником синхронизации папки на ftp с локальной папкой, т.е. качаем с ftp и приводим локальную папку к такому же содержанию, как на ftp.
 
Заранее спасибо!

Всего записей: 24877 | Зарегистр. 09-06-2004 | Отправлено: 10:27 20-03-2015
aftertime



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sish
wet-ом обязательно? если нет, то вот пример

Всего записей: 948 | Зарегистр. 25-11-2006 | Отправлено: 10:42 20-03-2015 | Исправлено: aftertime, 10:43 20-03-2015
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sish
--recursive скачивать весь веб-сайт.
--no-parent не переходить по ссылкам вне родительского каталога
--no-clobber не заменять какие-либо существующие файлы  
--timestamping контроль времени модификации файла

Всего записей: 3469 | Зарегистр. 05-01-2006 | Отправлено: 10:43 20-03-2015 | Исправлено: mithridat1, 10:43 20-03-2015
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Sish
 
Что-то типа такого @echo off&del /s/f/q d:\update\*>nul&wget --retr-symlinks -x -c -r -np <URL>
 
почистит содержимое целевого каталога и скачает удалённый.

Отправлено: 10:49 20-03-2015 | Исправлено: Victor_VG, 10:51 20-03-2015
mleo

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Страно что в Поиске не находится тема.
 
 
 
Добавлено:
D1D1D1D
 
Можно использовать сокс TBB:
 
# torsocks wget -nc http:
 
 
> У меня команда работает (через прокси AdvOR)
 
Потому что AdvOR поддерживает http

Всего записей: 2400 | Зарегистр. 19-05-2004 | Отправлено: 21:27 22-03-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:47:42 (c) xForumSaver