1

Я загружаю все файлы с веб-сайта ниже определенного узла.

wget \
    --recursive \
    --no-clobber \
    --page-requisites \
    --html-extension \
    --convert-links \
    --domains www.___.uk \
    --no-parent \
    http://www.___.uk/____/

Когда wget находит ссылку на файл, можно ли сказать wget также загрузить список индексов родительского каталога (и деда, и т.д.) И всех других файлов, связанных с этими страницами?

Например:

download /index.html (1 new link found)
download /pdfs/foo.pdf
download /pdfs/ (1 new link found)
download /pdfs/bar.pdf

1 ответ1

0

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

Учитывая ваше условное скачивание (родительской) страницы, ЕСЛИ / при условии, что есть файл ... на самом деле, если оставить в стороне условный аспект, то wget не обязательно даже сможет перейти на - скачать - родительскую страницу с заданной веб-страницу для загрузки, потому что это не работает так. Он видит только то, с чем связано. Также как он может загружать только те файлы, на которые он видит ссылки.

если веб-страницы в каждом каталоге являются типом страниц индекса каталога, которые включают . and .. тогда wget сможет загрузить веб-страницу и вернуться обратно вверх по дереву каталогов. (он не пойдет так далеко, как иностранные хосты, если вы не сделаете -H), но я полагаю, если вы не хотите идти до конца, загружая весь сайт, тогда вы захотите использовать -np, а затем не смог бы вернуться назад / вверх по дереву каталогов вообще, выше адреса веб-страницы, которую вы указываете для wget.

давайте на мгновение представим, что wget может вернуться назад (и в той степени, в которой это возможно, как упомянуто в предыдущем абзаце), во-первых, я не думаю, что вы можете сказать «только загружать родительский каталог, если есть файл». Но это в сторону. Я не думаю, что это имеет значение, если вы загружаете веб-страницу без файла. Веб-страница, файл htm/html, представляет собой лишь некоторую разметку и некоторые ссылки, она не занимает много места.

Что вы можете сделать, это загрузить весь веб-сайт настолько, насколько позволит wget (wget не может выполнить команду ls/dir для каталога и увидеть все, что там есть. Он знает только то, с чем связано, и получает веб-страницу для запуска. с). Вы можете скачать лот. А затем поработайте над исправлением вашей локальной копии. удаление нежелательных каталогов, нежелательных веб-страниц и т. д. может быть автоматизировать некоторые из них.

Я думаю, что ваш вопрос на данный момент, сбит с толку .. как работает wget. Я надеюсь, что это поможет, и, возможно, вы сможете переосмыслить то, что вы хотите, чтобы wget сделал.

Если вы хотите, чтобы wget загрузил эти 2 файла, вам понадобится веб-страница, ссылающаяся на них прямо или косвенно, указывая на другую веб-страницу, которая ссылается на них. Wget на самом деле не идет вперед или назад. Это не работает так. Но можно сказать, не возвращаться за пределы определенной точки. И хотя по умолчанию рекурсивный переход на иностранные хосты не идет, с помощью -H можно сказать, что он может рекурсивно переходить на сторонние хосты.

Может быть, Керл может делать то, что не может иметь отношение к тому, что вы хотите, но я не знаю. Я сомневаюсь, что wget может. но рассмотрим другие решения в рамках работы wget, которые я несколько описал.

Если вы скачаете, например, целый сайт или даже не весь сайт, а просто больше, чем вы хотите, у вас будет больше возможностей локально, так как вы сможете затем выполнить ls/dir для того, что у вас есть, получить хорошие списки, удалить то, что вы не хочу, автоматизируй Вы также можете переосмыслить то, что вы хотите попросить сделать wget.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .