Страница 69 / 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sikemo
Как и следовало ожидать, дело в юзер-агенте.
 
$ wget http://pidruchniki.ws/12590605/filosofiya/navchalniy_trening_gnoseologiya
--2012-10-13 22:18:40--  http://pidruchniki.ws/12590605/filosofiya/navchalniy_trening_gnoseologiya
Resolving pidruchniki.ws (pidruchniki.ws)... 91.224.160.122
Connecting to pidruchniki.ws (pidruchniki.ws)|91.224.160.122|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2012-10-13 22:18:41 ERROR 403: Forbidden.
 
$ wget --user-agent 'Mozilla/5.0' http://pidruchniki.ws/12590605/filosofiya/navchalniy_trening_gnoseologiya
 
--2012-10-13 22:17:59--  http://pidruchniki.ws/12590605/filosofiya/navchalniy_trening_gnoseologiya
Resolving pidruchniki.ws (pidruchniki.ws)... 91.224.160.122
Connecting to pidruchniki.ws (pidruchniki.ws)|91.224.160.122|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `navchalniy_trening_gnoseologiya.1'
 
    [  <=>                                                                                                                            ] 44 243       194K/s   in 0,2s    
 
2012-10-13 22:18:00 (194 KB/s) - `navchalniy_trening_gnoseologiya.1' saved [44243]


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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 21:19 13-10-2012
sikemo

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

Всего записей: 921 | Зарегистр. 27-11-2008 | Отправлено: 21:40 13-10-2012
AkaBOSS

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
уважаемые специалисты, помогите пожалуйста!
пытаюсь создать зеркало сайта, но возникла такая проблема:
при переходе по ссылкам сохраняемые документы получают нечитабельные имена, типа такого:
Р%97аглавнаС%8F_С%81С%82С%80аниС%86Р°.html
 
можно ли както указать вгету, что было бы неплохо перекодировать имена файлов?

Всего записей: 12 | Зарегистр. 02-09-2010 | Отправлено: 12:09 30-10-2012
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, AkaBOSS
Как сказать... Вопрос уже возникал, но багрепорт я так и не отправил... Сегодня отправлю.  
Набор костылей. Скачивает сайт, затем переконвертирует имена.
 

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 16:42 30-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AkaBOSS
> пытаюсь создать зеркало сайта
Совершенно бессодержательное утверждение. Что конкретно вы приказываете?
 
Alex_Piggy
> Вопрос уже возникал
М-м-м... Здесь? Я пропустил, да? Можно ссылку?

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 18:38 30-10-2012
Alex_Piggy

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

Цитата:
М-м-м... Здесь? Я пропустил, да? Можно ссылку?

Вы ничего не пропустили. Были вопросы около года назад. У Вас не воспроизводилось. Wget.  
Кстати, тогда не спросил у Вас кусок лога - в какой кодировке он сохраняет имена файлов в *nix?Посмотрите пожалуйста. (Если не затруднит, лог команды "wget --trust-server-names -d -a head.log http://zaplift.ru/images/%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%B0.jpg")
Потому что в Windows сохраняет точно в UTF-8 при стандартной для файловой системы CP866. Лог+закачаный файл. Проверял на Vista_SP1, XP_SP3.
 
Добавлено:
AkaBOSS
Подсказали метод переконвертации чисто имен файлов (спасибо Dmitry Bogatov):

Код:
 
set "codepage=1251"
chcp %codepage%
for /r "%~dp0" %%i in (*.*) do for /f "delims=" %%j in ('echo.%%i^| iconv -f UTF-8 -t CP%codepage%') do if not "%%~nxj"=="" if not "%%~nxj"=="%%~nxi" rename "%%~i" "%%~nxj"
 

В начале codepage или 866 или 1251. В зависимости от того, что на сайте.
Исправлено - добавлено 2 if.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 19:16 30-10-2012 | Исправлено: Alex_Piggy, 22:07 30-10-2012
AkaBOSS

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
с командной строкой вроде бы проблем нет, уже не первый сайт сливаю
 
wget --continue --mirror --wait=2 --execute robots=off --convert-links --page-requisites --html-extension --user-agent=Mozilla/5.0 http://%site%
 
Alex_Piggy
спасибо за ответ!
сейчас пробую обработать с помощью "набора костылей"
мнтернет у меня медленный, поэтому до собственно обработки дело еще не дошло
 
насчёт второго метода - попробую, если первый не сработает

Всего записей: 12 | Зарегистр. 02-09-2010 | Отправлено: 01:34 31-10-2012
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый вечер, AkaBOSS
Прошу прошения, забыл упомянуть - я не пробовал переконвертацию ссылок при помощи wget (использовал sed...)
Если медленный интернет, для проверки используйте "-Q" - квота на закачку, напр "-Q20m" - завершить зеркалирование (нормально) после скачки 20 МБ.  
И мне кажется, что второй вариант будет с переконвертацией дружить намного лучше. Лучше попробуйте его сначала.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 01:48 31-10-2012
AkaBOSS

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy, спасибо за Ваше внимание к моему вопросу, но ни один из способов не сработал (
на выходе часть файлов не переименовывается, а остальные переименованы только частично
 
кажется, всё из-за того, что не все символы могут присутствовать в именах файлов, поэтому к ним применяется кодирование урлов
например, часть имени сохраненного файла: РЎР»С%83жебнаС%8F%3A
при раскодировании будет выглядеть уже так: Служебная:
и при переводе кодировки превратится в текст "Служебная:"

Всего записей: 12 | Зарегистр. 02-09-2010 | Отправлено: 13:24 31-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AkaBOSS
> wget --continue --mirror --wait=2 --execute robots=off --convert-links --page-requisites --html-extension --user-agent=Mozilla/5.0 http://%site%
Ну и для того, чтоб можно было что-то начать что-нибудь делать по вашему вопросу, здесь еще, очевидно, не хватает строки, где была определена переменная %site%.
 
Добавлено:
Alex_Piggy
> лог команды "wget --trust-server-names -d -a head.log http://zaplift.ru/images/%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%B0.jpg"
Да, пожалуйста. Не очень, правда, понимаю, что вы можете извлечь из этой информации.
 
Подробнее...


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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 15:48 31-10-2012 | Исправлено: ASE_DAG, 15:49 31-10-2012
AkaBOSS

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
я пытаюсь выкачать ru.minecraftwiki.net

Всего записей: 12 | Зарегистр. 02-09-2010 | Отправлено: 17:25 31-10-2012
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день
ASE_DAG
Спасибо, уважаемый. У Вас он тоже в любом случае сохраняет как unicode. Интересно, а вывод $ LС_ALL=C ls или $ LС_ALL=POSIX ls (если ничего не напутал. Может быть LANG?) будет читаемый?
 
AkaBOSS
Посмотрел. Ужас. Сохранить работающее зеркало можно попробовать с помощью "--restrict-file-names=windows,ascii" (если нигде не напорется на ограничения по длине имени - 256 символов.). Хотя должно работать и так. Получить русские имена с работающим зеркалом - не возьмусь. Только ждать wget с "--local-filesystem-encoding". Прошу прощения, что не могу Вам помочь.
 
Исправлено:
Не знаю, какая из настроек локали перекрывает все остальные - LANG или LC_ALL.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 18:32 31-10-2012 | Исправлено: Alex_Piggy, 18:43 31-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AkaBOSS
Да, тов. Alex_Piggy прав. Наиболее разумное, что можно вам сейчас (да и на будущее) посоветовать — не мучиться с виндовым коминтерпретатором, а использовать Цигвин (Cygwin).
 
$ SITE=ru.minecraftwiki.net
$ wget --continue --mirror --wait=2 --execute robots=off --convert-links --page-requisites --html-extension --user-agent=Mozilla/5.0 --restrict-file-names=nocontrol,windows http://$SITE

 
Добавлено:
Alex_Piggy
> а вывод $ LС_ALL=C ls или $ LС_ALL=POSIX ls будет читаемый?
Нет, конечно.
$ touch файл
$ ls
файл
$ LC_ALL=C ls
????????
$ LANG=C ls
????????
$

 
> какая из настроек локали перекрывает все остальные - LANG или LC_ALL
Никакая. LC_ALL не перекрывает LANG, а LANG — заданные явно LC_*/etc/default/locale, например).

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 05:08 01-11-2012 | Исправлено: ASE_DAG, 05:28 01-11-2012
AkaBOSS

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

Всего записей: 12 | Зарегистр. 02-09-2010 | Отправлено: 17:36 01-11-2012
sikemo

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите, как подкачать файлы изображений gif к списку html или же сохранить с помощью wget'а полсностью файл.
 
страницы из этого списка выкачаны, а как взять gif-ки — не знаю.

Всего записей: 921 | Зарегистр. 27-11-2008 | Отправлено: 22:57 10-11-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sikemo
> как подкачать файлы изображений gif к списку html
Вы хотели сказать: «как докачать изображения, имея загруженный HTML без изображений?». Насколько я помню все опции сабжа — никак, если только не перезакачать их с локалхоста, для чего на нем нужен HTTP-сервер.
 
Перезагрузите вы все заново, не забыв в этот раз про --page-requisites. Неужели это так долго?

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 23:47 10-11-2012 | Исправлено: ASE_DAG, 23:49 10-11-2012
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброй ночи, sikemo
Скачать с изображениями - "-p". Можно (в данном случае лучше) с "-Kk"
Получить только гифы wget+sed  - как-то так:

Код:
 
sed -e "s/\(img src\)/\n\1/Ig" *.htm* | sed -n -e "s/img src\=\x22\(.*\.gif\)\x22.*/\1/Ip" > list.txt
sed -i -e "s@\(img src=\x22\)[^\x22]*/\([^\x22/]*\.gif\)@\1gifs/\2@Ig" *.htm*
wget -i list.txt -nc -B "http://mirreferatov.com/books/" -P gifs
 

Получает список гифов, меняет ссылку на них, закачивает.

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 00:31 11-11-2012
sikemo

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
спасибо, пошло.
Alex_Piggy
У меня нет sed. Sad, but win

Всего записей: 921 | Зарегистр. 27-11-2008 | Отправлено: 10:25 11-11-2012
3J5N9P



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sikemo
 sed под Вин тоже есть
http://gnuwin32.sourceforge.net/packages/sed.htm
http://www.pement.org/sed/

Всего записей: 206 | Зарегистр. 23-07-2010 | Отправлено: 11:16 11-11-2012
sikemo

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
знаю. Но не работал еще с ним. по приведенному сценарию Alex_Piggy будет работать сам по себе или лучше как CygWin. В смысле ему давать локальную страницу и обрабатывать ее или же он может сообщаться з www. И обрабатывается задача двумя ресурсами (sed +wget в win), а не шэллом?
 
---
 
Да кстати. --page-requisites скачало изображения, но на html страницах они не видны (адрес другой чтоли).

Всего записей: 921 | Зарегистр. 27-11-2008 | Отправлено: 13:35 11-11-2012
Открыть новую тему     Написать ответ в эту тему

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