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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
все хорошо, только как бы убрать проверку wget'ом наличие других файлов на сервере?
а то скачает файлы за 5 минут, а проверяет весь сервер 1 час (

Всего записей: 18 | Зарегистр. 01-11-2004 | Отправлено: 19:49 31-05-2009
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, подскажите, можно ли заставить вгет под виндовс7 работать?

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 20:08 31-05-2009
Molt



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

Цитата:
как бы убрать проверку wget'ом наличие других файлов на сервере?  

Ключами поиграться
 
К примеру  
 
wget -r -nd -A -l1 *.zip http://www.sophos.com/downloads/ide/

----------
"Give me the place to stand, and I shall move the earth" — Archimedes

Всего записей: 1299 | Зарегистр. 07-11-2004 | Отправлено: 21:46 31-05-2009
roninf

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли осуществить закачку только с четвертых уровней каталогов. Как пример :
http://sitename.com/*/*/*.*  
Здесь есть несколько каталогов с разнымы именами 2 и 3 уровня которые должны быть проигнорированы и должны быть закачаны только каталоги четвертого уровня.
Такое возможно сделать в wget ?

Всего записей: 1 | Зарегистр. 03-06-2009 | Отправлено: 13:52 03-06-2009
usr721

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

Код:
 
%wget% -D subdomen.domen.by -N -m -np -R html,htm -nH -w 1 --random-wait -P %wget_path% -a f:\Work\subdomen.domen.by.log http://subdomen.domen.by
 

Какими средствами и можно ли после завершения составлять список последних измененных 10-20 файлов (название, размер файла и тд) в отдельный файл (а еще чтоб можно было фильтром размера файла )?

Всего записей: 713 | Зарегистр. 10-07-2006 | Отправлено: 22:44 23-06-2009
usr721

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И еще, я правильно понял что не возможности задать максимальный размер скачиваемых файлов? Можно только общий лимит параметром -Q ?

Всего записей: 713 | Зарегистр. 10-07-2006 | Отправлено: 21:12 24-06-2009
juvaforza

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
changeset: Updates to NEWS and AUTHORS.
Да и вообще, в связи с повышенной активностью можно ждать в этом месяце новую версию

Всего записей: 2881 | Зарегистр. 25-11-2005 | Отправлено: 09:51 04-07-2009
bearjrgm

Редактировать | Цитировать | Сообщить модератору
А как побороть проблемы c ssl? Например для закачки с рапиды через премиум аккаунт?

Отправлено: 10:09 04-07-2009
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bearjrgm
А какие там проблемы? Уже больше года качаю через премиум с рапиды, все нормально. Единственное - с версией wget 1.11.4 файлы бывает докачиваются до 99% и начинает опять качать с нуля, по логам заметил. Нечасто, но бывает. С 1.10.2 такого нет.

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 12:03 04-07-2009 | Исправлено: igor_andreev, 12:12 04-07-2009
bearjrgm

Редактировать | Цитировать | Сообщить модератору
igor_andreev
у меня 1.11.4 вот такое пишет

Цитата:
ERROR: cannot verify ssl.rapidshare.com's certificate, issued by `/C=DE/O=WebSpa
ce-Forum, Thomas Wendt/CN=WebSpace-Forum Server CA':
  Self-signed certificate encountered.
To connect to ssl.rapidshare.com insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.

 
 

Отправлено: 21:11 06-07-2009
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bearjrgm
Ну так и добавь в комстроке ключ --no-check-certificate, как wget просит
 
Я вот такой простейший батник rget.cmd соорудил себе:

Код:

@ECHO OFF
IF %1/==/ (ECHO USAGE: rget [wget options] url [url2] [url3] [more urls]  && EXIT /B)
SET arguments=%*
ECHO.
ECHO. ***************************************
ECHO. * RGET valid until: Tue, 11 May 2010 *
ECHO. ***************************************
ECHO.
IF NOT EXIST "%TEMP%\RCOOKIE.TXT" (
  ECHO RCOOKIE not found, try save...
  WGET -O "%TEMP%\RCOOKIE.TMP" -nv -t 3 --no-check-certificate --keep-session-cookies --save-cookies "%TEMP%\RCOOKIE.TXT" --post-data "login=логин&password=пароль" "https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi"
)
IF EXIST "%TEMP%\RCOOKIE.TMP" DEL "%TEMP%\RCOOKIE.TMP"
IF NOT EXIST "%TEMP%\RCOOKIE.TXT" (
  ECHO Error saving RCOOKIE
  EXIT /B
)
WGET --load-cookies "%TEMP%\RCOOKIE.TXT" %arguments%
 

 
Логин-пароль свои только вписать. "RGET valid until..." ессно можно убрать, эт чтобы не забыть, когда премиум аккаунт продлять надо. Кинуть батник в PATH и при скачивании с рапиды в командной строке писать не "wget", а "rget".
 
То есть, все как обычно, но с рапидшары

rget http://rapidshare.com/files/252530513/picview.zip
rget -a log.txt http://rapidshare.com/files/252530513/picview.zip
rget -c -a log.txt -i task.lst
...

Если ссылка заканчивается на .htm или .html - убрать окончание .html и скормить rget-у, тоже скачает.
httр://rapidshare.com/files/252530513/picview.zip.html

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 00:09 07-07-2009 | Исправлено: igor_andreev, 00:15 07-07-2009
DCT

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как эту простую задачу решить wget:
 
- нужно в текущую папку скачать по ссылкам с заданной странички все файлы заданного расширения.
 
Проблема в том, что "wget -r --accept EXT URL" качает в подпапки, а "wget -i URL" вообще не работает.

Всего записей: 609 | Зарегистр. 22-12-2005 | Отправлено: 22:58 08-07-2009 | Исправлено: DCT, 23:00 08-07-2009
usr721

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так все таки есть ли возможность выставлять ограничение на размер отдельного файла? Если нет, подскажите пожалуйсто аналоги, кроме httrack.

Всего записей: 713 | Зарегистр. 10-07-2006 | Отправлено: 11:56 09-07-2009
DCT

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разобрался, вот так правильно работает: "wget -e robots=off -nd -r -l 1 -A EXT URL"
 
Только есть один минус - у части скачиваемых файлов в названии вместо дефиса ставит "%96". Это можно побороть?

Всего записей: 609 | Зарегистр. 22-12-2005 | Отправлено: 11:56 09-07-2009
TNR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите как заставить wget скачать с ftp только новый файл, а не качать всё ... ???

Всего записей: 1213 | Зарегистр. 15-03-2004 | Отправлено: 10:51 14-07-2009
ScreamWolf



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

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 17:30 16-07-2009
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ScreamWolf
Проще подписаться на новые сообщения через ярлык "Подписаться" темы. А с помощью wget-только путём скачивания страницы целиком и последующего синтаксического анализа с помощью таких программ, как grep (с целью подсчёта количества постов на последней странице). Однако сомневаюсь, что последнее решение может быть признано удобным.

Всего записей: 1780 | Зарегистр. 22-03-2003 | Отправлено: 18:29 16-07-2009
ScreamWolf



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

Цитата:
Проще подписаться

это конечно гуд, но смысл теряется - ведь один фиг на почту тогда валить нада((
 
а так конечно спс за инфу...

Всего записей: 197 | Зарегистр. 15-05-2009 | Отправлено: 18:37 16-07-2009
igor_andreev

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

Цитата:
ну, то есть, я оставил сообщение (данный форум) и что-бы каждый раз не заглядывать на страничку для проверки нового сообщения после моего, а просто запустить батник, который мне и скажет изменилось ли состояние страницы?

http://www.webscrape.com

Код:

@echo off
chcp 1251 >nul
pscrape -u"forum.ru-board.com/topic.cgi?forum=5&topic=10066&start=660#lt" -e"javascript:pasteN\('(.*)'\)(.*)title=\"Нажать сюда\">(.*)<\/a" -m -f"\$3 \$1"

   
 
Добавлено:
 
Хотя правильней на этом движке вместо "&start=XXX#lt" добавлять "&glp" (get last page) в конце url
-u"forum.ru-board.com/topic.cgi?forum=5&topic=10066&glp"
Ну в общем мысль понятна?

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 02:17 17-07-2009 | Исправлено: igor_andreev, 02:42 17-07-2009
popkov

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

Цитата:
ведь один фиг на почту тогда валить нада

Не один фиг: размер почтового сообщения гораздо меньше и к тому же уже существуют готовые решения. Проще говоря, достаточно лишь завести почтовый ящик и держать в трее какую-нибудь крохотную программку для проверки наличия новых сообщений, которая будет в случае обнаружения их выдавать звуковой (или какой нужно) сигнал. Это всё гораздо проще и надёжнее. Единственный недостаток - между публикацией поста и его попаданием в почтовый ящик всегда присутствует некоторая задержка (обычно совсем небольшая).
 
Добавлено:

Цитата:
Хотя правильней на этом движке вместо "&start=XXX#lt" добавлять "&glp" (get last page) в конце url  

Ещё правильней добавить limit=1, чтобы не качать ненужное. Таким образом, URL будет иметь вид:
http://forum.ru-board.com/topic.cgi?forum=5&topic=10066&glp&limit=1

Всего записей: 1780 | Зарегистр. 22-03-2003 | Отправлено: 10:31 17-07-2009 | Исправлено: popkov, 10:40 17-07-2009
Открыть новую тему     Написать ответ в эту тему

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