popkov
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Параметры программы WGET Все параметры чувствительны к регистру. Порядок их записи не важен. Они могут следовать после URL'ов, которых можно указывать сразу несколько, разделяя пробелами. Можно сокращать последовательность однобуквенных параметров, записывая их подряд без дефисов (например, "-rk" вместо "-r -k"). Для параметров, используемых с последующими аргументами, наличие пробела перед аргументом необязательно (например, записи "-o log.txt" и "-olog.txt" эквивалентны). Поскольку параметры могут идти после URL, есть возможность явно указать, где заканчиваютя параметры, и начинается URL, с помощью '--'. Например, команда wget -olog.txt -- -x приведёт к попытке загрузить URL "-x", записывая выводимые сообщения о неудаче в файл "log.txt". Глобальные свойства 1) Wget всегда следует за перенаправлениями, но их не может быть больше 20. Однако они не приводят к рекурсивной выгрузке чужих сайтов, если не указан параметр '-H' в сочетании с '-r' и соответствующие сайты разрешены для загрузки. 2) Wget поддерживает cookies. Wget принимает <все> cookies, присылаемые сервером, и отпраляет их ему в заголовках дальнейших запросов. Кроме того, можно заставить wget сохранять полученные cookies в файле на диске в формате, поддерживаемом Internet Explorer и Netscape. Также возможен импорт cookies, принятых этими браузерами и полное отключение использования cookies. 3) При рекурсивной выгрузке wget отправляет заголовки 'Referer'. Этот заголовок можно также задать отдельно через параметр '--referer=URL' при загрузке отдельных файлов. 4) Поддерживаются подстановочные символы в FTP-адресах и кодирование в них данных для аутентификации. Например, команда wget ftp://fly.cc.fer.hr/* Загрузит все файлы из корневой директории сервера ftp://fly.cc.fer.hr/. 5) Данные для аутентификации на http:// и ftp:// - серверах могут быть включены в URL: ftp://user:password@host/ http://user:password@host/ 6) Небезопасные символы в URL'ах могут быть представлены в шестнадцатеричном виде в соответствии с кодовой таблицей ASCII. Примеры небезопасных символов: "%" (представляется как "%25"), ":" ("%3A"), "@" ("%40"). Полный список таких символов см. в RFC1738 или, если в лом искать, в этом посте. 7) Wget поддерживает два режима передачи файлов через FTP: двоичный режим (binary mode, type=i - используется по умолчанию) и текстовый (ASCII mode, type=a). В двоичном режиме файлы загружаются без изменений (это режим по умолчанию). В ASCII-режиме осуществляется конвертация символов конца строки между разными операционными системами. Этот режим полезен при загрузке текстовых файлов. Вот пример его использования: ftp://host/directory/file;type=a 8) Все параметры, принимающие разделённые запятыми перечни аргументов, поддерживают правило, что указание после них пустого перечня аргументов очищает их текущее значение (например, заданное в файле .wgetrc). В следующем примере вначале очищается текущий перечень исключаемых при рекурсивной выгрузке директорий, заданный в файле .wgetrc, а затем в него вносятся корневые папки /cgi-bin и /dev: -X' ' -X/cgi-bin,/dev Описания важнейших параметров: -nc - не загружать существующие файлы. Удобна для продолжения закачки сайта, прерванной посередине. При этом первым делом программа будет рекурсивно обрабатывать уже загруженные файлы, не выходя в Интернет. Поэтому, в сочетании с параметром "-rk" этот параметр позволяет конвертировать ссылки в HTML-файлах недокачанного сайта при отсутствии подключения к Интернету (при этом, к сожалению, HTML-файлы, сохраненные с таким расширением только благодаря использованию параметра "-E", будут считаться незагруженными. А сохранённые с неправильным расширением вэб-страницы не будут распознаны, как HTML-файлы, и ссылки из них экстрагироваться не будут). Если не указан ни этот параметр, ни "-N", то при попытке докачать недокачанный сайт все файлы будут загружены заново с перезаписью уже существующих. Этот параметр отменяет действие параметра "-c" при рекурсивной выгрузке. -nd - не создавать никаких директорий, загружать все файлы в текущую директорию (если директория не задана отдельно). -k - после окончания закачки всех файлов конвертировать все ссылки в них для локального просмотра. При этом ссылки на те файлы, которые не были загружены, будут вести в Интернет. -E - сохранять все HTML-файлы, имеющие неправильное расшинение, с расширением .html (очень ценная опция при загрузке сайтов на ASP, CGI или PHP, т.к. без неё получается огромное количество файлов с неправильным расширением, которые, хотя и будут после конвертации открываться в браузере при переходе по локальной ссылке, плохо распознаются системой). Однако у этой опции есть побочное действие: те файлы, расширение которых было изменено, будут повторно загружены при докачке или обновлении существующей локальной копии сайта, даже если задан параметр "-nc" или "-N". Это связано с тем, что wget не может знать, к какому типу файла ведёт такая ссылка: "text/html" или "application/binary"? Соответственно, пока она не отправит запрос загрузки на сервер, не узнает. Тем не менее, это можно предотвратить в случае обновления существующей локальной копии сайта, если при первоначальной выгрузке использовать опции "-kK", что приведёт к тому, что оригинальные неконвертированные HTML-файлы будут резервироваться перед конвертацией в файлы с расширением .orig. В связи с этим, если есть вероятность, что сайт придётся докачивать без конвертации скачанных страниц, необдуманное использование этой опции оказывается невыгодным: во многих случаях те вэб-страницы на сайте, которые после скачивания будут иметь неправильное расширение, или совсем не нужны, или с них в любом случае не придётся начинать обзор. А ссылки на них с других страниц сайта после конвертации будут работать всё равно... Кроме того, следует помнить, что при использовании параметра "-nc" без "-E" такие файлы не только не будут загружаться заново, но также не будут конвертироваться при докачке, и вообще при докачке не будут распознаны как HTML-файлы, т.е. они будут потеряны в плане корректного отображения. А если использовать параметр "-E", они при докачке будут загружены заново, обработаны и после окончания закачки корректно конвертированы... А соль в том, что, например, на сайте www.3dnews.ru все ценные файлы имеют правильное расширение. Исключение не составляют даже файлы, создаваемые по ссылке "версия для печати"... Неправильное расширение только у счётчиков: это файла с именами вида "image.htm@count=3". Они все имеют одинаковый размер (3420 байт), и в некоторых папках их оказывается до 20 штук. Поскольку сайт этот имеет размер немаленький (больше 1 Гб), за один раз закачать его почти невероятно, даже если поставить закачку на двое суток. Это связано даже не с тем, насколько у Выс быстрый канал доступа в Интернет, а с загруженностью самого сервера. Поэтому, чтобы такого рода файлы каждый раз заново не закачивать, не следует использовать параметр "-E" или вносить их в список запрещённых... Однако закачать сайт www.3dnews.ru до конца всё равно не получится, т.к. эти файлы счётчиков создаются по мере рекурсивной выгрузки (я дошел до "image.htm@count=1500", и прекратил закачку, т.к. стало ясно, что эти файлы никогда не кончатся). После окончательного прекращения докачки, когда кроме счётчиков уже ничего не грузится, следует снова запустить её с параметром '-nc' в отсутствие соединения с Интернетом, и при запрете на загрузку таких файлов. Тогда все лишние файлы будут удалены, а ссылки корректно конвертированы. -r - рекурсивная выгрузка всех файлов в вышележащих и нижележащих папках на сервере. По умолчанию, wget не заходит на другие сайты, если не указан параметр "-H", однако исключением является переадресация документов с данного сайта на другие, например на сайте www.3dnews.ru в разделе "Downloads" есть много ссылок типа www.3dnews.ru/file.rar. Однако при переходе по ним оказывается, что file.rar на самом деле находится на сайте files.3dnews.ru или на ftp.3dnews.ru. Я нашел 2 способа это обойти: запретить загрузку файлов с расширением .rar или ещё радикальнее: отнять у текущего пользователя право на создание папок в корневой директории, где находится папка www.3dnews.ru. Для этого проще всего воспользоваться консольной командой: cacls "c:\dir1\dir2" /E /P user:R где "c:\dir1\dir2" - путь к корневой папке (текущая директория командной строки при запуске wget), user - имя текущего пользователя. Выполнения этой команды отключит наследование прав доступа для данной папки и удалит вообще все параметры доступа для неё, оставив только разрешение на чтение для пользователя user. Результатом такого действия станет следующее: wget будет посылать на сервер запрос на файл, но при попытке записи на диск каждый раз будет обнаруживать отсутствие прав доступа. При этом запрошенный файл она будет пропускать, и продолжать закачку. -p - загружать все файлы, необходимые для корректного отображения вэб-страницы. Благодаря этому параметру можно загружать с помощью wget отдельные вэб-страницы целиком, включая звуковые файлы, автоматически проигрываемые при открытии вэб-страницы и фреймы. Однако, по умолчанию, wget загружает только файлы, находящиеся на текущем сервере. Чтобы загружались все необходимые файлы, этот параметр надо использовать в комбинации с параметром "-H", а чтобы при этом не воссоздавалась структура всех серверов, на которых расположены затребованные файлы и не загружались ненужные файлы robots.txt, а сам HTML-файл был конвертирован для локального просмотра, следует использовать такую команду: wget -HEkp -nc -nd -e robots=off URL где URL - адрес вэб-страницы (его рекомендуется заключать в кавычки, т.к. некоторые URL'ы, содержащие небезопасные символы типа пробела, %, @, ?, неправильно интерпретируются обработчиком командной строки, если указать их без кавычек). Можно загружать вэб-страницы по списку в текстовом файле, если вместо "URL" указать "-i URLs.txt", где URLs.txt - имя файла со списком адресов для загрузки (по одному на строчку, в кавычки заключать нет необходимости). -e command - выполнить команду command файла .wgetrc. После этого параметра через пробел может идти только одна команда этого файла. Такого рода команды, естесственно, имеют преимущества над записанными в файле .wgetrc, поскольку выполняютя после выполнения всех команд в нём. -N - загружать с сервера только более новые файлы, чем уже сущесвующие. При этом для каждого файла на сервер будет отправляться запрос, по ответу на который будет определяться время последней модификации файла на сервере и его размер. Для некоторых файлов такая информация получена быть не может, например для файлов, генерируемых по запросу (так всегда бывает в случае веб-страниц форумов и любых других сайтов на PHP, ASP и т.п.). В этом случае wget загружает уже существующий файл повторно. При использовании этой опции в комбинации с "-kK" будут сравниваться также длины файлов. Кроме того, при использовании этого параметра полностью отключается приписывание окончаний "#" к существующим файлам. Например, если сочетать его с параметром '-nd', разные файлы с одинаковыми именами будут последовательно загружаться и перезаписывать предыдущие, т.к., при несовпадении размеров файла на сервере и на диске, существующий файл будет перезаписан независимо от даты его модификации. Однако после конвертации HTML-файлов все ссылки будут верны: ссылка в соответствующей вэб-странице, ведущая к тому файлу, который на самом деле был сохранён, будет вести к локальному файлу, а во всех остальных вэб-страницах - в Интернет, несмотря на то, что другие файлы тоже загружались (но потом перезаписывались). -np - при рекурсивной выгрузке закачивать файлы только из нижележащих директорий по отношению к указанной в URL. -Rlist. list - перечень окончаний имён файлов (например, gif или .jpg) и заключённых в кавычки шаблонов имён файлов (например, "zelazny*196[0-9]*" означает загрузку всех файлов, начинающихся с zelazny и содержащих числа от 1960 до 1969. Можно ещё использовать "?", как один подстановочный символ). HTML-файлы будут загружаться при рекурсивной выгрузке в любом случае, но если загрузка файлов с такими окончаниями или шаблонами имён запрещена, то после анализа они будут сразу же удаляться. Пример: -Rrar,zip,exe,"*template=print*" (запрещает загрузку файлов с расширениями rar, zip и exe, а также файлов, содержащих в имени последовательность символов "*template=print*". Однако последние, будучи html-файлами, всё равно будут загружаться, и сразу после загрузки удаляться, как запрещённые для сохранения. В связи с этим запрещать загрузку HTML-файлов по шаблону вообще не стоит: они всё равно будут загружены, да ещё и при докачке недокачанного сайта в очередной раз будут загружены в обязательном порядке...). -Alist - загружать только файлы со следующими расширениями: list. Параметр полностью аналогичен -Rlist, но действует наоборот. -llevel - при рекурсивной выгрузке сайта загружать на глубину level, считая от стартового файла. Если указано -l0 или -linf, то будут загружены все уровни (без ограничений). По умолчанию level=5. Под глубиной понимается удалённость последнего загружаемого файла от первого по числу промежуточных HTML-документов, которые пришлось проанализировать, не считая первый документ, и считая последний файл независимо от того, какого он типа. Таким образом, если level=1 и стартовая страница index.htm содержит ссылки на вложенную картинку image1.jpg, сжатый файл doc1.zip и страницу download.htm, в которой есть ссылки на doc2.zip, image2.jpg и страницу products.htm, то будут загружены только файлы image1.jpg, doc1.zip и products.htm. -m - создать локальную копию сайта или обновить уже существующую локальную копию сайта, загружая только обновлённые файлы, сохранять листинги FTP-директорий. Этот параметр эквивалентен следующей записи: "-Nrl0 -nr". -ologfile - записывать все выводимые сообщения в logfile, не выводя их на экран. logfile - имя файла или путь к нему (абсолютный или относительный). Например: wget -mkEK http://www.gnu.org/ -o /home/me/weeklog -alogfile - то же, что "-ologfile", но сообщения будут дописываться в конец этого файла вместо его перезаписи. -iURLs.txt - загрузить все файлы с адресами, указанными в файле URLs.txt, где URLs.txt - имя файла или путь к нему. В нём должно быть по 1-му URL на строку. URL'ы могут содержать данные для аутентификации. Если в качестве файла со списком URL'ов нужно использовать вэб-страницу, этот параметр следует использовать в сочетании с опциями '--force-html' и '--base=URL'. -Xlist - не загружать файлы из следующих папок: list , где list - рзделённый запятыми список путей к папкам относительно корневого каталога сервера, где каждый путь начинается с косой черты. Например, команда -X/cgi-bin,/people/~somebody приведёт к тому, что каталог верхнего уровня "cgi-bin" и подпапка "~somebody" каталога верхнего уровня "people" не будут загружены. Если путь к папке содержит пробелы, его можно заключить в кавычки, а всю последовательность аргументов - в апострофы. Этот параметр можно комбинировать с параметром "-I". Например, чтобы загрузить все файлы из иерархии директорий /pub, исключая /pub/worthless, нужно указать: -I/pub -X/pub/worthless -c - продолжить загрузку файла, который остался недокачанным в предыдущей сессии wget или другой программы. Это будет выполнено, только если сервер поддерживает докачку и размер файла на сервере больше, чем сохранённого на диске. Иначе, при наличии на диске данного файла, закачка произведена не будет. Этот параметр нет необходимости указывать для того, чтобы wget при внезапном обрыве соединения продолжил закачку вместо повторной загрузки с самого начала - в такой ситуации докачка, если её поддерживает сервер, является поведением по умолчанию, а параметр '-c' не оказывает никакого воздействия на поведение wget. Кроме того, следует быть осторожным, сочетая параметры "-c" и "-r", т.к. тогда каждый уже существующий файл будет рассматриваться как потенциально недокачанный, и в случае модификации документа на сервере, приведшей к увеличению его размера вместо закачки новой копии он будет "докачан" т.е. будет загружена конечная часть нового файла, и дописана в конец существующего. При рекурсивной выгрузке этот параметр вступает в противоречие с параметром "-N", что приводит к остановке загрузки или необработке некоторых HTML-файлов (этого не происходит, только если "-N" оказывается отключенным ввиду отсутствия в информации о дате модификации файла на сервере). Кроме того, такая простая докачка без отката может иногда давать повреждённый файл, если производится через "хромой" прокси-сервер, добавляющий в конец файла строку "transfer interrupted". В будущем автор планирует добавить возможность "отката" для решения этой проблемы (такая опция уже есть во FlashGet). -Dlist - ограничить рекурсивную выгрузку следующими доменами: list - разделённый запятыми перечень имён доменов. Этот параметр имеет смысл только в сочетании с "-H". Может употребляться вместе с обратным по действию параметром "--exclude-domains list", который действует совершенно аналогично, но наоборот: wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu http://www.foo.edu/ приведёт к загрузке содержимого всех серверов в домене foo.edu, за исключением сайта sunsite.foo.edu и сайтов в поддомене sunsite.foo.edu. | Всего записей: 1842 | Зарегистр. 22-03-2003 | Отправлено: 19:42 30-12-2003 | Исправлено: popkov, 06:16 08-11-2007 |
|