1

Я загружаю сайт с 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 ответ1

2

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

Кажется, вызвано китайским текстом в заголовке .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 .

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