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

Редактировать | Цитировать | Сообщить модератору
Althathwe
 
Берёте мануал и читаете там. Самое надёжное - пользователи могут ошибаться, автор знает.

Отправлено: 23:43 20-09-2011
Althathwe

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Читал.
 
upd. Хотя, кажется, сообразил — ария по-умолчанию несколько ссылок интерпретирует, как разные источники одного файла.

Всего записей: 296 | Зарегистр. 16-05-2011 | Отправлено: 00:00 21-09-2011 | Исправлено: Althathwe, 00:43 21-09-2011
sikemo

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, есть возможность скачать книгу с адреса
http://www.amazon.fr/gp/reader/2212124449/ref=sib_dp_pt#reader-link

Всего записей: 921 | Зарегистр. 27-11-2008 | Отправлено: 12:15 25-09-2011
ASE_DAG



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


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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 15:41 25-09-2011
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
скажите, никто не синхронизирует сабжем документы google docs?
Нашел вот такую howto , но что то видимо изменилось в интерфейсе google docs со времени его написания, путей таких к документам вроде как нету...
В общем, если теоретически возможно, хотелось бы чисто скриптом бэкапить, а еще лучше синхронизировать всю папку целиком на google docs с локальной копией этой папки на своей домашней машине, чтобы скачивались только те файлы, которые новее...

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 22:09 30-09-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
А чем вас googlecl не устроил?

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 22:35 30-09-2011
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Да не то чтобы не устроил...первый раз увидел просто..Спасибо.
Щас поизучаю...вот смотрю доки - а она точно делает то, что мне надо? Т.е. синхронизацию всей папки? Тогда конечно полностью устроит...
Еще бы примерчик, простенький, а то пока никак не пойму, где опции, а где путь к конфиг файлу прописать..

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 23:00 30-09-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
> Т.е. синхронизацию всей папки?
Нет, но сабж-то ее тем более не сделает.
 
> Еще бы примерчик, простенький, а то пока никак не пойму

Код:
#!/bin/bash
IFS="$(echo -e '\t')";
google docs list --delimiter="$IFS" | \
while read NAME URI; do  
    google docs get --format=pdf "$NAME" .;
done

 
(по идее, загрузит все документы в текущую директорию)

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 00:39 01-10-2011 | Исправлено: ASE_DAG, 00:41 01-10-2011
anynamer



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

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 11:39 01-10-2011 | Исправлено: anynamer, 11:40 01-10-2011
Weinaum



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

Цитата:
Т.е. синхронизацию всей папки?
Нет, но сабж-то ее тем более не сделает.  

вот жаль, я просто подумал, что раз сабжем вполне комфортно синхронизировать директории со всем содержимым по фтп, то возможно и тут есть способ.
Собственно, я предполагаю, что он(способ) возможно даже и есть, если в исходном скрипте после авторизации прописываю адрес типа docs.google.com/?tab=mo&authuser=0#home - к корневой папке докс, а остальные опции как для случая рекурсивной скачки с нужными мне параметрами, то как будто заходит, но получаю ошибку о неподдерживаемом браузере, скачивается html которая говорит "сорри, ваш браузер не кул", robots.txt и все.... замена юзер агента позволяет обходить это дело, но получаю только сгенерированные html файлы со страницы google...и так может полинета хтмл-ок выкачать...
 
что же касается googlecl, то пока вообще не разберусь, как он работает, прописал в конфиге свой логин- пароль, при запуске выходит браузер с просьбой разрешить - разрешаю, пишет ок, но что то ничего не скачивается...
к тому же, я понял, такое разрешение должно быть единичным, а у меня запрашивает при каждой попытке..
возможно, где-то ошибаюсь, но, впрочем, тут это оффтопик, может, можно продолжить где то в более подходящем для данного зверя теме, только я пока не определился, где..

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 12:26 01-10-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
anynamer
> чем  подсветку делали? руками?
Ну вы скажите: руками! Делать мне больше нечего. ;-) Вимовская это подстветка. Если хотите подробнее — давайте в тему по Виму, а то здесь это совсем офтопик.
 
Weinaum
> по фтп
Гугль дает доступ к документам по FTP? O_o Где?
 
> получаю только сгенерированные html файлы со страницы google
Да, код вебдванольного гугловского интерфейса не слишком пригоден для парсинга.
 
> прописал в конфиге свой логин- пароль, при запуске выходит браузер с просьбой разрешить
В конфиге можно было вручную ничего не писать. Запускаете — вводите логин — через веб-интерфейс получаете ключ — вводите ключ — все, можно юзать. Пример того, как можно загрузить все документы, я написал выше.

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

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



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

Цитата:
по фтп
Гугль дает доступ к документам по FTP? O_o Где?  

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

Цитата:
В конфиге можно было вручную ничего не писать. Запускаете — вводите логин — через веб-интерфейс получаете ключ — вводите ключ — все, можно юзать. Пример того, как можно загрузить все документы, я написал выше.

 
запускаю: Please specify user:  
ввожу
Please specify dest:  
 
Вот это что он просит? -  уже голову сломал, что ему надо..

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 18:51 01-10-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
> Please specify dest:
> Вот это что он просит?
Destination. ;-) Согласен, совершенно неожиданное поведение. Вместо того, чтоб загрузить в текущую папку, спрашивает куда.
Поэтому надо сразу явно указывать:  

Код:
google docs get --format=pdf "$NAME" .


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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 19:29 01-10-2011 | Исправлено: ASE_DAG, 19:29 01-10-2011
Weinaum



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я тоже так подумал, но при этом, куда бы не говорил загрузить - следующая ошибка:

Код:
Failed to get entries: Server responded with: 403, <errors xmlns='http://schemas.google.com/g/2005'><error><domain>GData</domain><code>ServiceForbiddenException</code><internalReason>403.4 SSL required</internalReason></error></errors>
 

 
ага, оказывается, ему python-gdata нужен не просто больше 2.0, (у меня был 2.0.8), а конкретно последний - щас обновил до 2.0.14 - ну по крайней мере начал качать, дальше посмотрим, как это можно практически гонять.
 
Снкс, ASE_DAG

Всего записей: 1773 | Зарегистр. 18-06-2006 | Отправлено: 19:44 01-10-2011 | Исправлено: Weinaum, 21:21 01-10-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
> не просто больше 2.0, (у меня был 2.0.8), а конкретно последний
Ну ХЗ. :-/
 
$ aptitude show googlecl
Package: googlecl                        
State: installed
Automatically installed: no
Version: 0.9.13-1
Priority: optional
Section: python
Maintainer: Obey Arthur Liu <[email protected]>
Uncompressed Size: 475 k
Depends: python (>= 2.5), python-support (>= 0.90.0), python-gdata (>= 1.2.4)
Description: command-line tool for access to (some) Google services  
<поскипано>

 
Хотя стоит у меня, да, 2.0.14-2.
 
> Снкс, ASE_DAG
Олвйс велкм.

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

Всего записей: 8468 | Зарегистр. 11-05-2005 | Отправлено: 20:31 01-10-2011
anynamer



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

Всего записей: 1488 | Зарегистр. 17-05-2010 | Отправлено: 20:55 01-10-2011 | Исправлено: anynamer, 20:55 01-10-2011
olemel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите выкачать Wget`том эту галерею
 
http://chickupload.com/gallery/72711/07VBO8W5
 
нужна не эта страница, ни маленькие картиночки а нужны фотографии в полном размере фотографии
 
Такой код непрошел
 
wget -cN --user-agent="Opera/9.80 (Windows NT 6.0; U)" http://chickupload.com/picture/1465824/full/NewImages/WebsiteLogos/01.png
 
и такой
 
wget http://chickupload.com/picture/1465824/full/NewImages/WebsiteLogos/01.png
 
Выкачивается всегда одно и тоже изображение - логотип этой галереи. Помогите пожалуйста.

Всего записей: 18 | Зарегистр. 17-10-2009 | Отправлено: 09:38 03-10-2011
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, olemel
Там меняют и проверяют cookies для каждой картинки.
Попробуйте следующий батник (нужен sed или ssed):

Код:
 
wget http://chickupload.com/gallery/72711/07VBO8W5 -O temp.url
sed -n -e "s|.*\(/showpicture[^[>]*\).>.*|chickupload.com\1|pg" temp.url >temp.lst
for /f %%i in (temp.lst) do (
wget --keep-session-cookies --save-cookies temp.cook %%i -O temp.1
sed -n -e "s|.*\(/picture/[^<]*\). id.*|http://chickupload.com\1|p" temp.1 >temp.2
wget -c --load-cookies temp.cook -i temp.2 )
del temp.*
 

Сделано коряво, но, вроде, работает.
 
Добавлено: Чуть переработано и улучшено.

Код:
 
wget http://chickupload.com/gallery/72711/07VBO8W5 -O - | sed -n -e "s|.*\(/showpicture[^\x22]*\).*|chickupload.com\1|pg" >temp.lst  
for /f %%i in (temp.lst) do (  
wget --keep-session-cookies --save-cookies temp.cook %%i -O - | sed -n -e "s|.*\(/picture/[^\x22]*full[^\x22]*\).*|http://chickupload.com\1|p" | wget -c --load-cookies temp.cook -i - )
 

Всего записей: 1537 | Зарегистр. 07-08-2002 | Отправлено: 18:18 05-10-2011 | Исправлено: Alex_Piggy, 19:46 05-10-2011
olemel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy очень, очень большое спасибо, скрипты работают на ура, немного повозился с sed а так все устраивает

Всего записей: 18 | Зарегистр. 17-10-2009 | Отправлено: 23:25 05-10-2011 | Исправлено: olemel, 23:26 05-10-2011
mouser

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

Цитата:
как скачать файлы только изминеные и новые ???  

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

Всего записей: 792 | Зарегистр. 10-11-2006 | Отправлено: 09:16 11-10-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:43:55 (c) xForumSaver