wget рекурсивная загрузка, но я не хочу переходить по всем ссылкам


10

Я пытаюсь отразить веб-сайт с помощью wget, но я не хочу загружать много файлов, поэтому я использую --rejectопцию wget, чтобы не сохранить все файлы. Однако wget по-прежнему загружает все файлы, а затем удаляет файл, если он соответствует моей опции отклонения.

Можно ли как-то сказать wget не переходить по определенным ссылкам, если они совпадают с каким-то подстановочным знаком оболочки? Если wget не может этого сделать, есть ли какая-нибудь другая стандартная команда linux, которая может это сделать?


3
Разместите всю свою команду, пожалуйста. Это значительно облегчает поиск неисправностей.
Джозеф Керн

Ответы:


9

Вы также можете попробовать HTTrack, который имеет, IMO, более гибкую и интуитивно понятную логику включения / исключения. Что-то вроде этого...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

Правила будут применяться по порядку и будут отменять предыдущие правила ...

  1. Исключить все
  2. Но включите https://example.com/images/ *
  3. Но исключить все, что заканчивается в SWF

Будет ли загружать CSS, изображения и т. Д. С обновленными URL-адресами?
brandizzi


1

В разделе --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.

Опции --reject указаны в кавычках. Я вижу, что они соответствуют правильным файлам, потому что после загрузки файла wget удаляет файл. Я просто хочу остановить загрузку файла в первую очередь
Рори

Это файлы htm (l)? Согласно инструкции, они загружаются независимо от того, что.
Кайл Брандт

Да. файлы, которые я хочу отклонить, являются файлами HTML. Я знаю, что они загружаются несмотря ни на что. Есть ли способ предотвратить это?
Рори

1

Вы можете ограничить уровень рекурсии с помощью -l NUMBERопции, если это помогает (не следуя определенному шаблону регулярных выражений).

Уровень «2» загружает index.html, его дочерние сайты / images / etc и ссылки на дочернем сайте.


нет, это не поможет в этом случае
Рори

1

как вы используете Wget? попробуйте использовать это таким образом:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

эта команда игнорирует файлы gif, jpg и swf.


Файлы, которые Рори Макканн хочет отклонить, являются файлами HTML, но он хочет сохранить другие файлы HTML, поэтому этот синтаксис не применим к его вопросу.
Ройс Уильямс

1

Одним из обходных путей может быть запуск 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 ИМХО

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.