Wget не создает индексный файл каталога

Wget не создает индексный файл каталога

Я пытаюсь загрузить сайт с помощью команды:

wget -r -l 0 -p -k -m -e robots=off --restrict-file-names=nocontrol,unix http://example.com

Когда он находит ссылку, например, http://example.com/directionон создает файл на диске./example.com/direction

Затем, например, он находит некоторые другие файлы (ссылки) в «направлении», предположимhttp://example.com/direction/11

И wgetпереписать старый файл ./example.com/directionс каким-то HTML, и преобразовать его в каталог. И записать новый файл ./example.com/direction/11там.

Если он находит внутри новый файл /direction/11, то он также перезаписывает 11его и преобразует в каталог.

Похоже, я потерял все файлы индекса каталога.

Есть ли решение проблемы в самом wget?

решение1

Это может не сработать в каждом случае, но мне удалось решить эту проблему с помощью несколько неожиданного тега.

Из руководства wget 1.17.1:

‘-E’

‘--adjust-extension’

Если загружается файл типа ‘application/xhtml+xml’или ‘text/html’и URL-адрес не заканчивается регулярным выражением , эта опция приведет к добавлению ‘\.[Hh][Tt][Mm][Ll]?’суффикса к локальному имени файла.‘.html’

Таким образом, в вашем случае, когда wget находит ссылку http://example.com/direction, он проверит, отформатирована ли страница в формате html. Если да, он сохранит ее на локальном диске как /example.com/direction.html. Затем, когда он увидит http://example.com/direction/11, он сохранит ее на диске как /example.com/direction/11, таким образом не перезаписав первый файл. Если предположить, что истинная структура каталогов — /example.com/direction/index.html, она не будет точно соответствовать структуре удаленного каталога, но, по крайней мере, она не будет неправильно перезаписывать файлы.

решение2

Ну, решение этой проблемы с использованием только Wget практически невозможно. Позвольте мне сначала попытаться объяснить вам проблему.

Сначала Wget пытается загрузить, http://site.com/direction. Когда Wget отправляет запрос на этот путь, сервер отвечает данными, доступными в http://site/com/example/index.html. Однако в этот момент Wget не знает, что отправляемые ему данные соответствуют пути: example/index.html. Теперь, когда Wget находит другой файл, , http://site.com/example/11то же самое происходит снова. Однако сначала он должен создать каталог example/ и безоговорочно удалить старый файл, чтобы сделать это. По моему мнению, Wget должен определить, заменяет ли он файл каталогом, и сохранить файл как индексный файл. Но на данный момент он этого не делает.

Связанный контент