![]() |
![]() |
![]() |
|||||||||||||||||||||
[Wget - насос для Интернета] Wget 1.5.3. Руководство пользователя |
![]() |
![]() |
|||||||||||||||||||||
![]() |
|||||||||||||||||||||||
Следование ссылкамПри рекурсивной выгрузке возникает желание не выгружать ненужные данные. Большинству пользователей хотелось бы выгружать именно то, что необходимо, поэтому хочется, чтобы Wget следовал только определенным ссылкам. Например, если вы желаете выгрузить музыкальный архив с сервера "fly.cc.fer.hr", то вы не желаете вместе с ним получить все домашние страницы, на которые могут быть ссылки внутри выгружаемого архива. Wget предоставляет несколько механизмов, которые позволяют вам осуществить точную настройку обрабатываемых ссылок.
Относительные ссылкиЕсли переход осуществляется только по относительным ссылкам (опция "-L"), рекурсивная выгрузка никогда не выполнит смену хоста. Продолжительные по времени запросы DNS не выполняются, поэтому скорость процесса будет высокой при минимальной нагрузке на сеть. Этого часто будет достаточно для ваших нужд, особенно в случае зеркалирования страниц являющихся результатом работы различного рода "x2html" фильтров, которые в основном генерируют относительные ссылки. Проверка хостовНедостаток обработки только относительных ссылок заключается в том, что люди часто перемешивают в пределах страницы или документа относительные и абсолютные ссылки на ту же страницу или тот же хост. В этом режиме, который является умалчиваемым, будут выгружены все URL, которые указывают на один хост. Для этой опции проблематичным являются синонимы доменов и хостов. Поскольку не существует способа для Wget понять, что "regoc.srce.hr" и "www.srce.hr" - это один и тот же хост или, что "fly.cc.fer.hr" то же самое, что и "fly.cc.etf.hr". Поэтому, когда встречается абсолютная ссылка, то выполняется проверка хоста DNS запросом "gethostbyname" с целью выяснения не тот же самый ли этот хост. Однако, даже несмотря на то, что DNS запросы кэшируются, это приводит к заметному снижению производительности особенно при обработке больших индексов домашних страниц на различных хостах, поскольку каждый хост должен быть проверен через DNS на предмет того не является ли он синонимом для начального хоста. Для избежания больших задержек возможно использование опции "-nh", которая отключает использование DNS и Wget сравнивает имена хостов посимвольно. Это может значительно ускорить процесс, но и сделать его значительно менее достоверным, потому что такие хоста как "www.srce.hr" и "regoc.srce.hr" будут рассматриваться как различные. Заметим, что современные HTTP сервера позволяют использовать один IP адрес для нескольких виртуальных серверов, каждый из которых имеет свою собственную иерархию каталогов. Подобные сервера различаются по их именам хостов, хотя все они указывают на один и тот же IP. Чтобы все это работало клиент должен посылать заголовок "Host", что, собственно, Wget и делает. Однако в этом случае Wget не должен пытаться распознать "настоящий" адрес хоста или пытаться использовать подобные имена для доступа, т.е. "-nh" должен быть включен. Иными словами, опция "-nh" должна использоваться при рекурсивной выгрузке с виртуальных серверов различаемых по именам хостов. Поскольку количество подобных серверов растет, в будущем, возможно, режим "-nh" станет умалчиваемым. Доменная избирательностьПри помощи опции "-D" вы можете определять имена доменов, которые будут обрабатываться. В этом случае DNS запросы для хостов, имена которых не принадлежат указанным доменам, выполняться не будут. Поэтому вы можете определить "-Dmit.edu" чтобы быть абсолютно уверенным, что ничего за пределами MIT просмотрено не будет. Это очень важно и полезно. Это так же значит, что "-D" не подразумевает "-H" (перемещение между хостами), которая должна определяться непосредственно. Использование данных опций позволяет увеличить скорость обработки одновременно с сохранением достоверности проверки для всех хостов. Поэтому вы можете выполнять wget -r -D.hr http://fly.cc.fer.hr/ чтобы быть уверенным, что только хоста в домене ".hr" будут опрошены через DNS для проверки их идентичности с "fly.cc.fer.hr". Поэтому "fly.cc.etf.hr" будет проверен (только один раз!) и признан эквивалентным, а "www.gnu.ai.mit.edu" не будет проверен никогда. Конечно доменная избирательность может быть использована для ограничения выгрузки в пределах определенного домена с одновременным обходом хостов в его пределах, но в этом случае необходимо явное использование опции "-H". Например: wget -r -H -Dmit.edu,stanford.edu http://www.mit.edu/ Начнет работать с "http://www.mit.edu/" последовательно переходя по ссылкам в пределах MID и Stanford. Если существуют домены, которые должны быть исключены, то вы можете проделать это опцией "--exclude-domains", которая принимает тот же тип аргументов, что и "-D", но будет исключать все перечисленные домены. Например, если у вас есть желание выгрузить все домены в пределах домена "foo.edu" исключив при этом "sunsite.foo.edu", то вы можете проделать следующее: wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu \ http://www.foo.edu/ Все хостаКогда определена опция "-H" без указания опции "-D", то обрабатываются все встречающиеся хоста. В этом случае полностью отсутствуют какие-то ни было ограничения на части сети, к которым Wget будет обращаться для получения документов, кроме максимальной глубины рекурсии. То есть если страница ссылается, скажем, на "www.yahoo.com", то он тоже будет обработан. Данная опция редко применима сама по себе. Типы файловПри выгрузке материалов с WWW вам часто будет необходимым ограничить выгружаемые данные определенными типами файлов. Например, если вы заинтересованы только в выгрузке GIF файлов, то вы не будете слишком обрадованы выгрузке документов Postscript и наоборот. Wget предоставляет две опции для решения этой проблемы. Описание каждой опции приводит ее короткое имя, длинное имя и эквивалентную команду файла ".wgetrc".
Опции "-A" и "-R" могут использоваться совместно для получения очень
точного поведения при выгрузке. Например,
' Заметим, что эти две опции не касаются выгрузки HTML файлов, Wget должен выгружать все HTML документы чтобы выяснять куда ему двигаться дальше, в противном случае рекурсивная выгрузка становится просто бессмысленной. Ограничения на уровне каталоговНезависимо от других типов обработки ссылок часто бывает полезно установить ограничения на получаемые файлы на основе каталогов, в которых они расположены. Тому может быть много причин. Домашние страницы обычно организуются на уровне каталогов. Некоторые каталоги содержат бесполезную информацию, например "cgi-bin" или "/dev". Wget предоставляет три опции для удовлетворения этих требований. Описание каждой опции приводит ее короткое имя, длинное имя и эквивалентную команду файла ".wgetrc".
Подобно опциям "-A" и "-R", эти
две опции могут быть использованы совместно для получения более точных
результатов работы. Например, если вы хотите выгрузить все файлы из
иерархии каталогов "/pub" за исключением каталога "/pub/worthless",
то укажите "
FTP ссылкиПравила для FTP немного специфичны, то есть такие, какими они и должны быть. FTP ссылки в HTML документы включают чаще всего именно для ссылки, поэтому чаще всего нет никакой необходимости их обрабатывать по умолчанию. Для того, чтобы FTP ссылки в HTML документе все же обрабатывались, существует опция "--follow-ftp". При ее указании будет производиться переход между хостами по FTP ссылкам независимо от опции "-H". Это логично, поскольку FTP ссылки почти никогда не указывают на тот же хост, где находится HTTP сервер. По этим же причинам опция "-L" не оказывает никакого влияния на такую выгрузку. С другой стороны, доменная избирательность (-D) и правила суффиксов (-A и -R) работают как обычно. Отметим так же, что следование ссылкам на FTP каталоги не приведет к последующей рекурсивной выборке по ссылке. |
![]() |
|
|||||||||||||||||||||
![]() |
|||||||||||||||||||||||
![]() |
|||||||||||||||||||||||
![]() |
![]() |
![]() |