Я использую wget --mirror --html-extension --convert-links
для зеркального отражения сайта но я заканчиваю с большим количеством имен файлов в формате post.php?id=#.html
. Когда я пытаюсь просмотреть их в браузере, он перестал работать, потому что браузер игнорирует строку запроса при загрузке файла. Есть ли любой способ заменить ?
символ в именах файлов с чем-то еще?
Ответ --restrict-file-names=windows
работавший правильно. В сочетании с флагами --convert-links
и --adjust-extension
/-E
(раньше названный --html-extension
, который также работает, но удерживается от использования), это производит зеркало, которое ведет себя как ожидалось.
wget --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example
Посмотрите --restrict-file-names
опция. В то время как не точно предназначенный для этой конкретной цели, --restrict-file-names=windows
будет, вероятно, способствовать Вам:
- restrict-file-names=modes
Изменение, каких символов, найденных в удаленных URL, нужно оставить во время поколения локальных имен файлов. [...]
Когда "окна" даны, Wget выходит из символов \, |,/:?, ", *, <>, и управляющие символы в диапазонах 0 - 31 и 128 - 159. В дополнение к этому Wget в режиме Windows использует + вместо: разделить хост и порт в локальных именах файлов и использование вместо? разделить часть запроса имени файла от остальных. Поэтому URL, который был бы сохранен как www.xemacs.org:4300/search.pl? input=blah в режиме Unix был бы сохранен как www.xemacs.org+4300/search.pl@input=blah в режиме Windows.
Ваш браузер просмотрит его прекрасный при использовании URL как
file:///tmp/example.com/post.php%3Fid=1.html
вместо
file:///tmp/example.com/post.php?id=1.html
Примечание: если бы Вы испытываете затруднения из-за внутренних ссылок из загруженных файлов, это было бы, потому что Вы завершили wget, прежде чем это было сделано с загрузкой. Так как Вы указали - преобразовывать-ссылки, и - расширение HTML (только применяется, когда им дают), wget обычно исправлял бы ссылки для использования %3F вместо?; однако, это делает это в конце, после того, как это закончило загружать; если бы это было прервано, то это не будет исправлять ни одной из ссылок, и Вас оставляют в этом затруднительном положении. Конечно, можно всегда писать сценарий, чтобы пройти и исправить ссылки, но...
wget не имеет опции изменить сохраненное имя. То, что необходимо будет, вероятно, сделать, создают сценарий, чтобы пройти и заменить? с _ или что-то подобное. Один только Wget не может сделать этого.