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

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

Цитата:
Удалять не стал: найдём новый адрес - поправим, откроем, пока побудет в запасе.

Вот этот можно в шапку https://eternallybored.org/misc/wget/

Всего записей: 1595 | Зарегистр. 08-12-2004 | Отправлено: 22:48 06-01-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
igor_andreev
 
Добавил. Спасибо!

Отправлено: 22:58 06-01-2016
VidelSamogO



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

Цитата:
AWGG - универсальный ГУЙ для Wget, cURL, aria2, lftp и axel.

Попробовал. Жуткие глюки. Например при использовании wget ставлю доп параметр --timestamping, чтобы брал дату с сервера. Он выдаёт на гора двойную командную строку.  
 
wget.exe --timestamping -e recursive=off -S -O wget.exe -c --progress=bar:force -P "Downloads\Programs" -t 10 -T 10 -w 5 https://eternallybored.org/misc/wget/current/wget.exe
 
 
И естественно никакой даты не получается.

Всего записей: 410 | Зарегистр. 16-08-2008 | Отправлено: 03:06 07-01-2016 | Исправлено: VidelSamogO, 01:48 09-01-2016
srkr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как бы обойти такое?
Качаю страницы темы с форума сайта job-mo.ru.
Первая команда:
 
wget -p http://www.job-mo.ru
 
Создается локально папка "www.job-mo.ru" c папками стилей и картинок.
Затем другой командой закачиваю страницы темы в папку "www.job-mo.ru".
Нумерую их. Всё делаю в батнике.
 
Дальше анализирую закачанные страницы. Там все ссылки на стилевые файлы
вида "/css/style.css". И стиль не отрабатывает. А если руками убрать ведущий слэш,
то всё - стиль работает.
Как поступить?
Запустить в конце батника правку всех закачанных страниц - убрать ведущий слэш?

Всего записей: 48 | Зарегистр. 14-12-2009 | Отправлено: 01:20 08-01-2016 | Исправлено: srkr, 01:22 08-01-2016
PavelSES



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
srkr
wget -r -k -l 1 -p -E -nc http://www.job-mo.ru/community/21/20185/
так не пойдет?
 
-r = указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.
-k = используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).
-p = указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).
-l = определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.
-E = добавлять к загруженным файлам расширение .html.
-nc = при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.
(с) интернет

Всего записей: 190 | Зарегистр. 18-07-2006 | Отправлено: 03:23 08-01-2016 | Исправлено: PavelSES, 03:25 08-01-2016
srkr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня не рекурсивная загрузка. Использую цикл, а линки на страницы известны.
Примерно такой командник:
 
if exist "www.job-mo.ru\nul" wget --spider -p http://www.job-mo.ru
wget -Owww.job-mo.ru/page1.html http://www.job-mo.ru/community/21/20185/
for /l %%i in (2,1,35) do wget -Owww.job-mo.ru/page%%i.html http://www.job-mo.ru/community/21/20185/%%i/
 
Циклически скачиваю только страницы темы. Первая страницабез номера, приходится вне цикла ее брать.
Ключ "-nc" - полезный, может пригодиться.

Всего записей: 48 | Зарегистр. 14-12-2009 | Отправлено: 04:09 08-01-2016
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нужно скачать из конкретного дневника в livejournal.com все посты по конкретному тэгу в хронологическом порядке (или хотя бы сгенерировать список URL этих постов - дальше уже легко!). Может, кто уже делал подобное? Основами работы с wget владею: неясно как решить проблему извлечения ссылок на нужные посты, да еще чтобы обязательно сохранить хронологический порядок?

Всего записей: 1780 | Зарегистр. 22-03-2003 | Отправлено: 18:38 18-01-2016
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
popkov
Для начала - что-нибудь типа
Цитата:
wget -O- "http://<LJNAME>.livejournal.com/data/rss?tag=<TAG>"|find /i "<link>"
В урлэнкодных тегах (например русских) знак % надо удваивать в батниках.

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 19:06 18-01-2016
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pasha_ZZZ
Т.е. фишка в том, что ссылки на посты, отфильтрованные по тегу, всегда заключены в тег <link>?
 
Добавлено:
Pasha_ZZZ
А есть опция, чтобы сразу возвращались все посты с данным тегом, а не последние 25?

Всего записей: 1780 | Зарегистр. 22-03-2003 | Отправлено: 19:59 18-01-2016 | Исправлено: popkov, 13:33 19-01-2016
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
popkov
Цитата:
ссылки на посты, отфильтрованные по тегу, всегда заключены в тег <link>?
Ссылки на все полученные посты всегда в этом теге, а фильтрацию по тегу задает значение в URL
Цитата:
А есть опция, чтобы сразу возвращались все посты с данным тегом, а не последние 25?
никак нет

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 20:31 18-01-2016
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pasha_ZZZ
Цитата:
никак нет  
Тогда остается только "листать" в обратную сторону. Добавил в конце URL &skip=25 - ничего не изменилось. Неужели и эта возможность перекрыта в RSS? Если так, то мне нужно другое решение, т.к. записей по тегу может быть 100 и более.

Всего записей: 1780 | Зарегистр. 22-03-2003 | Отправлено: 21:14 18-01-2016
Pasha_ZZZ



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
popkov
Цитата:
wget -O- "http://<LJNAME>.livejournal.com/tag/<TAG>"|find /i "    data-url="

Всего записей: 3758 | Зарегистр. 11-03-2002 | Отправлено: 21:40 18-01-2016
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pasha_ZZZ  
Спасибо за помощь! Поиском "data-url=" успешно создал хронологический список постов. Их в моем случае оказалось более 400. Единственное неудобство - по неясной причине livejournal.com последние несколько постов не выдает независимо от значения &skip=n, но это мелочи. Далее загрузил все посты в поддиректорию "files" командой:
Код:
wget -HEkp -nc -nd -e robots=off -Pfiles -i urls.txt

Единственная проблема в следующем: каждый из постов содержит немалое количество ссылок типа
Цитата:
http://l-stat.livejournal.net/voxhtml/holiday-stripes-green/icon-favorite.gif?v=1
. В процессе загрузки сервер отвечал на все подобные запросы ответом 404, поэтому после конвертации HTML-файлов для оффлайнового просмотра (ключ -k) они по-прежнему ведут в Интернет, и при открытии локальных HTML-страниц браузер "ждет ответа от сервера".  
 
Возможно ли было предотвратить такую ситуацию средствами Wget?  
 
Есть ли способ исправить уже конвертированные HTML-файлы, чтобы подобные ссылки не "подвешивали" браузер? Как это сделать корректно?

Всего записей: 1780 | Зарегистр. 22-03-2003 | Отправлено: 19:06 19-01-2016
Vasily_Koshkin



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые, подскажите пожалуйста, как все-таки докачивать сайты в случае остановки закачек вручную? Где-то в сети откопал такой батник:
Код:
 
@echo off
set /p URL=Enter URL (with no http://):
if "%URL%"=="" goto error
D:\Soft\WGet\wget.exe -r -l0 -k -np -p -nv -nH -E -t 4 -N -c http://%URL% -P D:\Sites\
goto end
:error
echo No site specified!
:end

Все работает неплохо, но при попытке запустить его второй раз (после остановки) выдаются сообщения "no such file or directory".  
Опцию --no-clobber, которую иногда советуют, пробовал - не помогло. Использовал wget 1.17.1-win32 отсюда.  
Вопрос к присутствующим простой - что я делаю не так? Спасибо за внимание.
 
PS. Ах да, кому интересно, сайт - http://skazkina.com

Всего записей: 481 | Зарегистр. 07-02-2004 | Отправлено: 15:25 18-02-2016 | Исправлено: Vasily_Koshkin, 15:25 18-02-2016
dariusii



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как создать/сгенерить input-file при помощи wget и при этом не грузить никаких файлов?  То есть, wget'у стравливается корневой урл и он по нему идет один уровень. Все ссылки, что видит, записывает в файл (не файлы ссылок, а сами ссылки).
Задача - работать в один поток при последующем скачивании множества страниц с сайта. чтоб keep-alive, так keep-alive.

Всего записей: 2259 | Зарегистр. 08-11-2003 | Отправлено: 19:45 20-02-2016 | Исправлено: dariusii, 20:20 20-02-2016
kollajjik

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, очень нужно чтобы wget скачивал файлы в папку основной директории (без подкаталогов) и при этом скачивал файлы с одинаковыми названиями но с разных поддиректорий (подкаталогов).
 
например есть эти 2 ссылки:
 
http://00becauseshesbeautiful00.tumblr.com/post/100094769057/flashing-in-public-hottest-girls-flashing-in
http://00becauseshesbeautiful00.tumblr.com/post/100094966582/flashing-in-public-hottest-girls-flashing-in
 
если ставлю так:
 
-P -nd -b --no-iri -i С:\downoad.txt  
 
то скачивает оба c нумерацией НО без осноного каталога:
 
flashing-in-public-hottest-girls-flashing-in
flashing-in-public-hottest-girls-flashing-in.1
 
 
Если ставлю так:
 
-P -x --cut-dirs=100 -b --no-iri -i С:\downoad.txt
 
то скачивает в основной каталог НО только один файл:  
 
00becauseshesbeautiful00.tumblr.com\flashing-in-public-hottest-girls-flashing-in
 
 
может кто подскажет что нужно прописать чтобы скачивал оба одноименных файла с разных поддиректорий в основной каталог (без подкаталогов)??
 
Был бы очень благодарен за помощь !!

Всего записей: 52 | Зарегистр. 13-06-2011 | Отправлено: 22:57 24-02-2016 | Исправлено: kollajjik, 00:14 25-02-2016
Engaged Clown



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вроде не было:
AWGG - Advanced Wget GUI v0.5.0.4945
12-02-2016
 
https://github.com/Nenirey/AWGG
 
https://sites.google.com/site/awggproject/file-cabinet
 
AWGG - Advanced Wget GUI is a very fast open source download manager. It will accelerate your file downloads and resume broken connections. AWGG comes with a well designed interface interface and can be integrated with the Firefox web browser. AWGG is based on the most popular downloads engines like wget, aria2, cURL, axel and youtube-dl, AWGG is most that an frontend, is multiprocess, portable and simple, includes a scheduler, clipboard monitor, and drop box. AWGG is 100% free, never expires, and does not contain any spyware or advertisements. Its source is freely available to any one who wants to inspect or modify it.
 
Setup-x86
Setup-x64
 
Portable-x86
Portable-x64
 
PS упс, полистал выше, нашёл.

----------
Опросы ru-board'а

Всего записей: 7019 | Зарегистр. 08-06-2006 | Отправлено: 16:33 04-03-2016 | Исправлено: Engaged Clown, 16:42 04-03-2016
zivstack

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не могу разобраться почему Wget не может скачать транспортную карту с этого сайта: http://transportmap.ru/moscowtransport.html
оболочку загрузил, более мелкие карты тоже, а конкретно вот эту не хочет?!
пробовал убирать ограничение по глубине закачки, потом закачивал отдельно уже по ссылке http://fotokarta.info/map/map.php?url=http://transportmap.ru/Moscow&m=markers
ничего не вышло, что не так?

Всего записей: 65 | Зарегистр. 29-11-2015 | Отправлено: 18:54 11-03-2016
VictorVG2

Редактировать | Цитировать | Сообщить модератору
zivstack
 
Вы на исходники страницы гляньте - там скрипт на скрипте и скриптом погоняет:

Код:
<script style="" src="map_php_files/js.js" type="text/javascript" charset="utf-8"></script>
    <link href="map_php_files/style3.css" rel="stylesheet">
    <script type="text/javascript" src="map_php_files/jquery.min.js"></script>
    <link href="map_php_files/facebox.css" rel="stylesheet">
    <script src="map_php_files/facebox.js" type="text/javascript"></script>
 
    <script src="map_php_files/map3.min.js" type="text/javascript"></script>
<script src="map_php_files/common.js" charset="UTF-8" type="text/javascript"></script><script src="map_php_files/map.js" charset="UTF-8" type="text/javascript"></script><script src="map_php_files/util.js" charset="UTF-8" type="text/javascript"></script><script src="map_php_files/onion.js" charset="UTF-8" type="text/javascript"></script><script src="map_php_files/controls.js" charset="UTF-8" type="text/javascript"></script><script src="map_php_files/AuthenticationService.Authenticate.js" charset="UTF-8" type="text/javascript"></script><script src="map_php_files/stats.js" charset="UTF-8" type="text/javascript"></script><script src="map_php_files/QuotaService.RecordEvent.js" charset="UTF-8" type="text/javascript"></script></head>
<body>
 
<script type="text/javascript"><!--
 
/* Script removed by snapshot save */
 
--></script>
<script src="map_php_files/info.js" type="text/javascript"></script>
<!--markers--><script src="map_php_files/markers.js" type="text/javascript"></script><!--/markers-->

а изображение генерится в браузере на стороне клиента. Иначе все на халяву качать будут, а как хозяева сервиса свой гешефт получат. Кто тут маленьких обижает!?

Отправлено: 19:14 11-03-2016
zivstack

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

Цитата:
а изображение генерится в браузере на стороне клиента.  

 
я так понимаю карта это php файл который не закачивается Wget, но с другой стороны я нашел пару фрагментов от него, вопрос почему он  целиком не прокачался? может что в командах изменить или добавить?
а есть ли еще какой либо способ решить вопрос по его закачке?

Всего записей: 65 | Зарегистр. 29-11-2015 | Отправлено: 21:26 11-03-2016
Открыть новую тему     Написать ответ в эту тему

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