Страница 87 / 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 -HEkp -nc -nd -e robots=off -P _temp_ "http://vivovoco.astronet.ru/VV/PAPERS/VV_AU_W.HTM"

с командой:

Код:
wget -O index.htm "http://vivovoco.astronet.ru/VV/PAPERS/VV_AU_W.HTM"

т.е., чтобы в итоге закачка произошла в несуществующую папку "_temp_", со всеми файлами, необходимыми для корректного отображения вэб-страницы и т.д (первый код) -- одновременно с определенным именем "index.htm" (второй код)?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 12:14 30-10-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
Нет. И дело здесь не -P, который достаточно бессмысленен — куда правильнее оперировать текущей директорией, а в том, что -O — это перенаправление всего вывода.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 13:03 30-10-2013 | Исправлено: ASE_DAG, 13:06 30-10-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вдруг кому пригодится: закачка файлов с Яндекс.Диск через WGET в cmd.exe
P.S.: требуется SED, например из UnxUtils

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 13:36 30-10-2013 | Исправлено: Pasha_ZZZ, 13:36 30-10-2013
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
То есть средствами WGET не предусмотрено скачивание во вновь созданную папку с определенным именем (без последующих переименований)?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 17:47 30-10-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
Этот и предыдущий вопрос от вашего имени в этой ветке точно заданы одним человеком?
 
> не предусмотрено скачивание во вновь созданную папку с определенным именем (без последующих переименований)?
Ключ --directory-prefix (-P) предусмотрен ровно для этого.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:23 30-10-2013
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну раз в первом ответе вы намекнули, что приведенные мной параметры не уместны, я захотел уточнить, действительно ли загрузка файла в свежесозданную папку с новым (измененным) именем во wget не доступна, т.к. из ваших слов напрашивалось, что если не уместны эти, существуют другие.
Кстати, в первый раз вы пишите: "дело здесь не -P, который достаточно бессмысленен", а сейчас: "Ключ --directory-prefix (-P) предусмотрен ровно для этого". Для скачивания в созданную папку с определенным (заданным) именем? Если да, дайте пожалуйста пример кода.

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 19:54 30-10-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
> в первый раз вы пишите: "дело здесь не -P, который достаточно бессмысленен", а сейчас: "Ключ --directory-prefix (-P) предусмотрен ровно для этого"
Да. Вы видите здесь противоречие? Недостаточно осмысленен он потому, что это корректно и более прозрачно заменяется сменой текущей директории, что я уже писал.
 
> дайте пожалуйста пример кода
$ wget -HEkp -nc -nd -e robots=off -P _temp_ "http://vivovoco.astronet.ru/VV/PAPERS/VV_AU_W.HTM"

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 21:36 30-10-2013
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вы извините, но ещё раз: каким будет код, который загрузит страницу "http://vivovoco.astronet.ru/VV/PAPERS/VV_AU_W.HTM" как "INDEX.htm" в папку с именем "_temp_"?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 22:07 30-10-2013
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
D1D1D1D
Загрузить страницу с ее реквизитами, переименовав только HTML-файл, невозможно. Для переименования воспользуйтесь возможностями вашего шелла после завершения работы вгет.

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 22:34 30-10-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
D1D1D1D
 
Вам потребуется выполнить две группы операций - переименование и правку ссылок. Ну, первая элементарна, к примеру mv -f <old> <new>, вторая потребует применения редакторов типа awk, sed или им подобных умеющих обрабатывать скрипты вида "найти и заменить все", а обе вместе потребуют применения скрипта который задаст нужную последовательность команд. Так выйдет, иначе результат будет не предсказуем.

Отправлено: 04:01 31-10-2013
D1D1D1D

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

Код:
wget --load-cookies cookies.txt -HEkp -nc -nd -e robots=off "http://rutracker.org/forum/viewtopic.php?t=4568753"

 
С чего бы?

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 19:13 01-11-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
D1D1D1D
 
Исходники их страниц посмотрите - конструкций типа такой (это типовой спойлер с картинками):

Код:
<div class="sp-body" title="Примеры страниц">
<h3 class="sp-title">Примеры страниц</h3>
<a href="http://fastpic.ru/view/60/2013/1022/4b32f53aacf1fcef44277ea2b6683309.jpg.html" class="postLink"><var class="postImg" title="http://i60.fastpic.ru/thumb/2013/1022/09/4b32f53aacf1fcef44277ea2b6683309.jpeg">&#10;</var></a> <a href="http://fastpic.ru/view/60/2013/1022/1a5646c38cfa801134fa8d5f524dfd1b.jpg.html" class="postLink"><var class="postImg" title="http://i60.fastpic.ru/thumb/2013/1022/1b/1a5646c38cfa801134fa8d5f524dfd1b.jpeg">&#10;</var></a> <a href="http://fastpic.ru/view/60/2013/1022/ac8f488cbe127bbb7ed4f495e15e0a1f.jpg.html" class="postLink"><var class="postImg" title="http://i60.fastpic.ru/thumb/2013/1022/1f/ac8f488cbe127bbb7ed4f495e15e0a1f.jpeg">&#10;</var></a> <a href="http://fastpic.ru/view/60/2013/1022/b3831cbd2c4a43e4a60c553c0bf333ef.jpg.html" class="postLink"><var class="postImg" title="http://i60.fastpic.ru/thumb/2013/1022/ef/b3831cbd2c4a43e4a60c553c0bf333ef.jpeg">&#10;</var></a> <a href="http://fastpic.ru/view/60/2013/1022/96d809ece62afdd787496f5437453fad.jpg.html" class="postLink"><var class="postImg" title="http://i60.fastpic.ru/thumb/2013/1022/ad/96d809ece62afdd787496f5437453fad.jpeg">&#10;</var></a> <a href="http://fastpic.ru/view/60/2013/1022/bf45eaad81567269abf8a9f048fae1b2.jpg.html" class="postLink"><var class="postImg" title="http://i60.fastpic.ru/thumb/2013/1022/b2/bf45eaad81567269abf8a9f048fae1b2.jpeg">&#10;</var></a> <a href="http://fastpic.ru/view/60/2013/1022/83805381208e2b52aed4ee2fd260e073.jpg.html" class="postLink"><var class="postImg" title="http://i60.fastpic.ru/thumb/2013/1022/73/83805381208e2b52aed4ee2fd260e073.jpeg">&#10;</var></a></div>
</div>

там по десятку на каждой и вдобавок эти спойлеры обрабатываются через скрипты и CSS. А cURl/Wget не браузеры, они скрипты вычислять не умеют....

Отправлено: 19:30 01-11-2013 | Исправлено: Victor_VG, 19:33 01-11-2013
D1D1D1D

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

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 20:04 01-11-2013
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D
Обсчитывает ли HTTrack яваскрипты, вы хотите спросить? Нет.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 20:12 01-11-2013 | Исправлено: ASE_DAG, 20:13 01-11-2013
D1D1D1D

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Victor_VG
Оказалось, если заменить main.js@v=40 на полученный из браузера (переименовав), спойлеры заработают.

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 21:38 01-11-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
D1D1D1D
 
Так браузер же его уже для нас просчитал, а вгет/сурл эти не занимаются. И по моему это хорошо - не хватает к качалке ещё Эверест прикрутить - "А вдруг когда понадобится?".

Отправлено: 22:02 01-11-2013
PREVED



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста! Нужно быстрое решение!
 
Задача: нужно заставить wget выкачивть файлы(точнее веб-страницы из кэша поисковика) по ссылкам из списка в txt.
 
Проблема - имя файла получается очень длинным. Wget из-за этого не может обработать эти ссылки, так как конечный(результатирующий) файл оказывается с именем слишком огромной длины! (сказывается ограничение файловой системы на макс.длину файла в windows).  
Как можно заставить wget качать файлы(html) по этим ссылкам НА ЛЕТУ давая им короткие имена, последовательноприсваивая им имена (например 01,02)???

Всего записей: 1943 | Зарегистр. 10-03-2006 | Отправлено: 00:02 02-11-2013 | Исправлено: PREVED, 00:04 02-11-2013
Victor_VG

Редактировать | Цитировать | Сообщить модератору
PREVED
 
А у вас не срабатывает часом ограничение на допустимые символы имён объектов файловой системы? Или нет объектов с пробелами в именах или имеющих к примеру точку в начале конце имени? Что-то мне сильно подсказывает что стоит посмотреть не торчат ли за проблемой ушки дяди Стиви ибо слишком хорошо в известной конторе сотрудникам привито понятие "Все действующие стандарты подлежат безусловному соблюдению, но если мне не хочется или не выгодно соблюдать стандарт, то это проблема стандарта и пользователей!".

Отправлено: 01:11 02-11-2013
D1D1D1D

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

Код:
wget -i файл_со_списком_ссылок -O "%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%.html"

Всего записей: 392 | Зарегистр. 04-04-2010 | Отправлено: 01:17 02-11-2013 | Исправлено: D1D1D1D, 01:18 02-11-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время
D1D1D1D
Прошу прощения. Вы невнимательны. Wget. Ваш код отправит все скачанное в один файл.
 
Victor_VG
Встречался с таким. Юникодные имена при "--restrict-file-names=ASCII". Действительно по длине имени. Недавно вспоминалось.
http://lists.gnu.org/archive/html/bug-wget/2013-06/msg00068.html
 
PREVED
Попробуйте более новую версию. Не смотрел, как там сделали. Кажется, просто обрезают до 240 символов. При этом не учитывают длину имени папки сохранения.
https://db.tt/4Rg7aMLN

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 10:35 02-11-2013 | Исправлено: Alex_Piggy, 10:37 02-11-2013
Открыть новую тему     Написать ответ в эту тему

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