
Я пытаюсь рекурсивно загрузить каталог с помощью этой команды:
wget -r -l2 --no-parent -A "*.pdf" -nd -N -e robots=off http://…
Скрипт выполняется каждые 15 минут, поэтому я хочу максимально сократить запросы. Я увидел, что есть много запросов, ?C=M;O=A
которые исходят от кнопок-модификаторов порядка каталогов, таких какИмя,ДатаилиРазмер(пример). Как я могу предотвратить возникновение таких запросов?
решение1
Как указано вОтветна связанный вопрос,документация wgetговорит:
Также обратите внимание, что строки запроса (строки в конце URL, начинающиеся с вопросительного знака ('?')) не включаются в имя файла для правил принятия/отклонения, хотя они фактически будут способствовать выбору имени для локального файла. Ожидается, что в будущей версии Wget будет предоставлена возможность сопоставления со строками запроса.
Вероятно, вам придется использовать другой инструмент, напримерпавукилиhttrack. Эти две программы обеспечивают более надежную фильтрацию имен, чем wget.
В качестве альтернативы вы можете загрузить каталог с помощью wget и затем отфильтровать его.
find . -name '*\?' -delete
# Here is a less dangerous pattern that matches the string you provided more closely:
find . -name '*\??=?;?=?' -delete
решение2
Я бы использовал httrack, если вы пытаетесь отразить каталог файлов *.pdf. Мне помогла такая команда:
% httrack http://my.server.com/dir/with/pdfs/ +mime:text/html +*.pdf --update
Дополнительную информацию о httrack можно найти по следующим ссылкам:
- Базовое руководство пользователя
- Ссылки для скачивания
- примеры команд
- Статья в блоге с дополнительными примерами
Я должен упомянуть одно из главных преимуществ использования httrack по сравнению с wget: httrack будет загружать только те файлы, которые были изменены/обновлены.