Я пытаюсь отразить веб-сайт с помощью wget, но я не хочу загружать много файлов, поэтому использую wget --reject
возможность не сохранять все файлы. Однако wget все равно загрузит все файлы, а затем удалит файл, если он соответствует моей опции отклонения.
Есть ли способ запретить wget переходить по определенным ссылкам, если они соответствуют подстановочному знаку оболочки? Если wget не может этого сделать, есть ли другая распространенная команда Linux, которая может это сделать?
Вы также можете попробовать HTTrack который имеет, IMO, более гибкую и интуитивно понятную логику включения / исключения. Что-то вроде этого...
httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"
Правила будут применяться по порядку и переопределят предыдущие правила ...
Похоже, это невозможно в wget
Вы можете ограничить уровень рекурсии с помощью -l NUMBER
вариант, если это помогает (не следуя определенному шаблону регулярного выражения).
Уровень «2» загружает index.html, его дочерние сайты / изображения / и т.д. и ссылки на дочернем сайте.
В разделе --reject файла man wget:
«Обратите внимание, что если какой-либо из подстановочных знаков, *,?, [Или], появляется в элементе acclist или rejlist, он будет рассматриваться как шаблон, а не суффикс».
Если вы делаете это, вы можете привести примеры используемых вами шаблонов и то, что, по вашему мнению, должно совпадать, а это не так. Вы говорите, что они совпадают, но уверены ли вы?
Кроме того, убедитесь, что вы заключили этот список в кавычки, чтобы оболочка не расширяла эти подстановочные знаки перед передачей аргумента (ов) в wget.
Даже если ваша система не имеет версии 1.12, прочтите раздел «Типы файлов» в руководстве. Вот. Согласно журналу изменений, сопровождающий добавил несколько предостережений:
* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.
как вы используете wget? попробуйте использовать это так:
wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/
эта команда игнорирует файлы gif, jpg и swf.
Один из способов обхода - запустить wget через прокси-сервер. Настройте свой прокси на запрет определенных шаблонов. Это в первую очередь заблокирует их загрузку с wget.
wget загрузит и удалит файл, соответствующий шаблону -R. он также может соответствовать шаблонам, а не только расширениям или частям имен файлов. Однако это не мешает wget сначала загружать, а потом удалять.
У httrack есть несколько хороших функций, но, по моему опыту, способ сохранения «файла» может быть немного необычным, например если httrack встречает index.asp? Type = BASIC & PAGEID = 2234234
он может сохранить его, но вы должны указать ему, чтобы он сохранил части запроса
например % h% p /% n% [TYPE: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
@ - это заполнитель для вопросительного знака, вы можете переименовать файлы позже или, возможно, вместо этого использовать вопросительный знак? проблема в том, что.% t добавит '.html' в конец вашего URI, у которого изначально не было '.html'. И если вы уберете его, изображения, загружаемые httrack, не будут иметь расширения файла.
Лучше использовать wget ИМХО