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

Редактировать | Цитировать | Сообщить модератору
Pasametr
 
Не за что. Проблем нет - а это главное. Я пока знаю один сайт с которого просто так что-то скачать сложно, да и то, по кривости его скриптов - специально так сделано - addons.mozilla.org - получить с него что-то с нормальным именем не всегда удаться. Последний с кривым именем пришёл FlagFox 4.1.8 - попробуйте скачать его по их ссылке _https://addons.mozilla.org/seamonkey/downloads/latest/5791/addon-5791-latest.xpi?src=external-flagfox.net и получите addon-5791-latest.xpi?src=external-flagfox.net. Ну, там скрипты всю жизнь были кривые, на остальных сайтах работает нормально.

Отправлено: 10:58 26-10-2011
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, ув Victor_VG
Как ни странно, Wget из распространяемой Вами сборки при попытке скачать с addons.mozilla.org
wget.exe --content-disposition --no-check-certificate https://addons.mozilla.org/seamonkey/downloads/latest/5791/addon-5791-latest.xpi?src=external-flagfox.net скачивает и сохраняет как flagfox-4.1.8-fx+sm.xpi.  
Пожалуйста, подробнее опишите проблему.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 12:25 26-10-2011
iglezz

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, в 1.13.4 с ключиком --content-disposition не работает --continue, было обидно потерять больше часа времени и 100Мб мобильного трафика (не хватило до окончания буквально пары мегабайт)
Так что откатился я до 1.12.1 обратно...

Всего записей: 573 | Зарегистр. 18-02-2003 | Отправлено: 23:28 30-10-2011
PbIXTOP

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такая проблема необходимо скачивать кучу файлов с sourceforge.net
но он некоректно определяет близжайщее зеркало (в 99% space.kz)
Скорость скачивания через него ужастная не более 10кб/c  
И возникла проблема как сменить mirror на другой
Пробовал забирать cookies из браузера не помогло

Всего записей: 46 | Зарегистр. 20-02-2006 | Отправлено: 16:09 06-11-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> И возникла проблема как сменить mirror на другой
http://downloads.sourceforge.net/project/inkscape/inkscape/0.48.2/inkscape-0.48.2.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Finkscape%2Ffiles%2Finkscape%2F0.48.2%2F&ts=1320588890&use_mirror=citylan

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

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

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

Код:
 
wget -q -O - http://tortoisesvn.net/downloads.html | grep -P "http://downloads.sourceforge.net.*?(TortoiseSVN.*?.msi|LanguagePack.*?-ru.msi)" -o | wget -a update.log -N -P develop/tortoise -i -
 

И подобных записей больше 50 в файле

Всего записей: 46 | Зарегистр. 20-02-2006 | Отправлено: 00:10 07-11-2011 | Исправлено: PbIXTOP, 00:12 07-11-2011
juvaforza

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PbIXTOP
Честно говоря, не знаю как это определить командой, но задать зеркало на sf для, например, такой ссылки:
 
sourceforge.net/projects/tortoisesvn/files/1.7.1/Application/TortoiseSVN-1.7.1.22161-win32-svn-1.7.1.msi/download
 
можно так (как сказал ASE_DAG):
 
sourceforge.net/projects/tortoisesvn/files/1.7.1/Application/TortoiseSVN-1.7.1.22161-win32-svn-1.7.1.msi?use_mirror=citylan
 
или указать прямую ссылку:
 
citylan.dl.sourceforge.net/project/tortoisesvn/1.7.1/Application/TortoiseSVN-1.7.1.22161-win32-svn-1.7.1.msi

Всего записей: 2881 | Зарегистр. 25-11-2005 | Отправлено: 11:48 07-11-2011
PbIXTOP

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мда, скрипт полностью автоматизирован
Соответственно указывать напрямую скачиваемую версию нельзя
Единственная проблема - это только   неправильно выбираемое зеркало на автомате самим сервером SF
Нашел решение сам

Код:
 
SET mirror=citylan
wget -q -O - http://tortoisesvn.net/downloads.html | egrep -o -i "http://downloads.sourceforge.net.+(TortoiseSVN-.+\.msi|LanguagePack.+-ru\.msi)" | awk "{print $0 \"?use_mirror=%mirror%\"}" | wget -a update.log -N -P develop/tortoise -i -
 


Всего записей: 46 | Зарегистр. 20-02-2006 | Отправлено: 12:47 07-11-2011
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Качаю wget ом. Почему то скачка обрывается, думаю, что то с провайдером. При этом wget просто молча висит, прибавляя время, оставшееся до крнца скачки. Если его перезапустить, снова некоторое время качает. Что выставить можно, чтоб он перезапускался?

Всего записей: 2093 | Зарегистр. 17-07-2006 | Отправлено: 06:42 12-11-2011
iglezz

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

Цитата:
 -T,  --timeout=SECONDS         set all timeout values to SECONDS.

Всего записей: 573 | Зарегистр. 18-02-2003 | Отправлено: 06:46 12-11-2011
anton1209

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Прошу помощи. Есть ссылка http://www.spybotupdates.biz/files/
По ней с помощью Wget надо скачать файл spybotsd162.exe - дистрибутив Spybot-S&D.
В чем проблема: необходимо, чтобы Wget скачивал самый свежий дистрибутив программы, т.е. не обращал внимание на цифры в названии файла.  
Как реализовать это в виде батника? Заранее спасибо!

Всего записей: 28 | Зарегистр. 22-05-2010 | Отправлено: 14:05 15-11-2011
PbIXTOP

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

Код:
wget -q -O - http://www.spybotupdates.biz/files/|egrep -o -i "spybotsd[0-9]+\.exe"|sort -r|head -n 1|wget -a update.log -N -P antivir/spybot -i - -B http://www.spybotupdates.biz/files/

Для работы может потребоваться или SUA или GNUwin

Всего записей: 46 | Зарегистр. 20-02-2006 | Отправлено: 23:16 15-11-2011
anton1209

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не получилось, wget в лог пишет No URLs found in -.
 
Удалось таким способом (с использованием 2-го зеркала):

Код:
wget -r -l1 --no-host-directories --no-parent -A spybotsd*[0-9]* -P downloads http://spybot-download.net/

Всего записей: 28 | Зарегистр. 22-05-2010 | Отправлено: 14:07 16-11-2011 | Исправлено: anton1209, 14:15 16-11-2011
Victor_VG

Редактировать | Цитировать | Сообщить модератору
Alex_Piggy
 
Да, вот на ключ --content-disposition  я просто внимания не обращал.

Отправлено: 15:10 16-11-2011
drPeps

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Читать всю тему сил нет, поэтому извините, если что не так… Можно ли с помощью WGet решить такую задачу: создать файл со списком файлов в Internet и там в этом же списке для каждого файла указать путь, по которому каждый конкретный файл будет сохранен на моем компьютере (эти пути могут быть разными для разных файлов), а потом просто вгрузить этот файл-список в WGet.
 
То, что WGet может качать по списку, это я понял, но мне надо, чтобы файлы заливались не в одну кучу, а в определенные папки, которые я указываю для каждого файла отдельно, вот.

Всего записей: 104 | Зарегистр. 16-12-2004 | Отправлено: 11:48 17-11-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drPeps
> Можно ли с помощью WGet
«С помощью Вэ-гета» — безусловно. «Исключительно Вэ-гетом» — нет.
 
Если список drPeps.list имеет вид:
http://example.org/path/to/file    /local/path/
(разделитель — табуляция), то на Баше решение drPeps.sh будет выглядеть так:
 

Код:
#!/bin/bash
IFS=$(echo -ne '\t')
while read URI PREFIX; do
    wget -P "$PREFIX" "$URI"
done

 
$ drPeps.sh < drPeps.list

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 12:18 17-11-2011
drPeps

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Благодарю за ответ, хотя ничего непонятно :). Что такое Баш? Это среда исполнения какая-то или ЧТО? Код в рамочке (т.е. то, что вы привели под словом "код") где набирать надо? А ниже строка: "$ drPeps.sh < drPeps.list" — это где писать?
 
В общем, чувствую, для меня всё это слишком мудрёно. Хотелось бы обойтись стандартными средствами Windows. Вгрузить файл-список на исполнение в WGet я еще смогу, а остальное для меня — китайская грамота.

Всего записей: 104 | Зарегистр. 16-12-2004 | Отправлено: 13:04 17-11-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drPeps
> Что такое Баш?
http://ru.wikipedia.org/wiki/Bash
 
> Хотелось бы обойтись стандартными средствами Windows.
Сразу это надо было писать. Обратитесь в ветку «Задачи на bat-файлах», дав ссылку на то, что привел вам я. Я думаю, там вам помогут переписать это под «стандартные средства Windows».
Кстати, замечу, что сабж ни в коей мере стандартной виндовой утилитой не является, так что уже не обошлись. ;-)

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 13:55 17-11-2011 | Исправлено: ASE_DAG, 13:55 17-11-2011
dyarsleau

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А есть под ХР возможность задать качать файл Wget-ом не с начала а с заданного мной байта. Мне надо скачать файл про который я знаю, что первые 30000 байт мне не нужны. Можно ли задать скачивание файла начиная с 30001 -го байта. Вот CURL это умеет. Спасибо.

Всего записей: 15 | Зарегистр. 22-01-2003 | Отправлено: 18:54 17-11-2011
sikemo

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

Цитата:
drPeps

Извините, что вклиняюсь
Цитата:
«С помощью Вэ-гета» — безусловно. «Исключительно Вэ-гетом» — нет.  

сгенерировать ссылки можно скопировав html-страницу в OpenOffice.org/Writer/Web . А для одного ftp список файлов создать ещё проще.  

Цитата:
ASE_DAG


Код:
 
#!/bin/bash  
IFS=$(echo -ne '\t')  
while read URI PREFIX; do  
    wget -P "$PREFIX" "$URI"  
done
 

А как это решается в Виндовз?

Всего записей: 921 | Зарегистр. 27-11-2008 | Отправлено: 22:09 17-11-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:44:06 (c) xForumSaver