Как использовать HTTrack для загрузки сжатых файлов с URL-адресов с акцентированными символами?

Я загружаю сайт с HTTrack с пятнистыми результатами. Несколько каталогов возвращают 2 или более версий одного и того же файла HTML. Эти дубликаты в любом каталоге могут включать в себя:

  1. файл с именем índice.html (обратите внимание на акцент), который показывает бред в браузере. При более тщательном изучении получается, что это архив.z с неправильным расширением, содержащий правильный файл HTML
  2. файл с именем índice.html.z, который является архивом, содержащим читаемую версию этого файла
  3. файл с именем ndice-2.html, который является хорошей версией исходного файла índice.html, отлично читаемый в браузере
  4. файл с именем índice-2.html.z, который является архивом, содержащим тот же файл, но иногда этот файл несколько отличается по размеру от первого
  5. так далее

Журнал ошибок HTTrack показывает следующее:

18:07:32 Ошибка: "Ошибка при распаковке" (-1) по ссылке example.com/conversación/índice.html

Это испанский сайт, и в некоторых каталогах есть акценты, и файлы называются ndice.html вместо index.html. Это заставляет меня подозревать, что причиной того, что HTTrack портит загрузку, являются акценты, но я не могу доказать это, за исключением того, что я загрузил английскую версию того же сайта без проблем.

Подводя итог, можно сказать, что проблема может заключаться либо в акцентированных символах в URL-адресе, либо в чем-то еще, связанном с способом обработки HTML-файлами в формате HTTrack, но мой главный вопрос остается прежним:

Это ошибка в HTTrack или ожидаемое поведение, и как мне ее обойти, чтобы успешно загрузить испанскую версию сайта?

1 ответ

Это может быть вызвано символами с акцентом, как вы подозреваете. Эта открытая ошибка кажется связанной.

Кажется, вызвано китайским текстом в заголовке.whtt. Иногда китайский текст приводит к тому, что Winhttrack создает несколько папок с мусорным кодом в той же папке, что и файл.whtt. И в этих случаях в папках загрузки остаются файлы.html.z, а иногда и файлы с задержкой или пустые файлы, а также сообщение об ошибке "Ошибка при распаковке".

Когда я повторил попытку с простым именем ASCII-проекта для URL-адреса sam, это удалось.

Так что, похоже, проблема с кодировкой (которой нет в некоторых более ранних версиях).

предложения:

  • Попробуйте --utf8-conversion флаг.
  • Если это не сработает, попробуйте загрузить более раннюю версию программы (так как репортер ошибок утверждает, что в некоторых более ранних версиях проблема не обнаружена).
  • В качестве альтернативы используйте wget вместо. Что-то вроде

    wget -mkp -np -nH www.example.com/path/to/toplevel/directory/index.html
    

    будет рекурсивно копировать все страницы, связанные с index.html которые находятся в каталоге example.com/path/to/toplevel/directory/, Он также включает в себя любые файлы, необходимые для поддержки этих файлов (CSS, JS и т. Д.).

    примечание: если wget уничтожает акцентированные имена файлов, используйте опцию

    --restrict-file-names=nocontrol
    

почти дубликаты файлов

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

Если существует какая-то согласованная схема именования, и вы знаете, что вам не нужны файлы с определенным именем и / или путем, вы можете использовать фильтр, чтобы исключить их.

  • HTTrack позволяет исключать файлы с помощью фильтров. Это шаблоны с префиксом -например фильтр

    -www.example.com/path/to/toplevel/directory/subdir_with_dupes/*-2.html
    

    исключит все файлы в подкаталоге subdir_with_dupes/ которые имеют имя, оканчивающееся на -2.html, Существуют различные шаблоны и правила сканирования, которые можно использовать в фильтрах. Смотрите ссылку выше или справочную страницу.

  • Если вы используете wget, вы можете исключить каталоги с помощью --exclude-directories и суффиксы имени файла с --reject (позволяя подстановочные знаки). Или вы можете применить фильтр регулярных выражений ко всему URL с помощью --reject-regex, Есть много других вариантов. Вы можете получить список с wget --help и объяснения с man wget,

Другие вопросы по тегам