如何使用 HTTrack 从带有重音字符的 URL 下载 gzip 压缩文件?

如何使用 HTTrack 从带有重音字符的 URL 下载 gzip 压缩文件?

我正在使用 HTTrack 下载一个网站,但结果参差不齐。多个目录返回了同一 HTML 文件的 2 个或更多版本。任何给定目录中的这些重复项可能包括:

  1. 一个名为 índice.html(注意重音符号 í)的文件在浏览器中显示为乱码。仔细研究后发现,这是一个扩展名不正确的 .z 存档,其中包含正确的 HTML 文件
  2. 一个名为 índice.html.z 的文件,它是一个包含该文件可读版本的档案
  3. 一个名为 índice-2.html 的文件,它是原始 índice.html 的良好版本,在浏览器中完全可读
  4. 一个名为 índice-2.html.z 的文件,它是一个包含相同文件的存档,但有时该文件的大小与第一个文件略有不同
  5. ETC

HTTrack 错误日志显示以下内容:

18:07:32 错误:“解压缩时出错”(-1),链接为 example.com/conversación/índice.html

这是一个西班牙语网站,有些目录中有重音符号,文件名为 índice.html 而不是 index.html。这让我怀疑 HTTrack 搞乱下载的原因是重音符号,但我无法证明这一点,除了我下载了同一网站的英文版,没有任何问题。

总而言之,问题可能在于 URL 中的重音字符,或者与 HTTrack 处理 gzip 压缩的 HTML 文件的方式相关的其他问题,但我的主要问题仍然是一样的:

这是 HTTrack 中的错误还是预期行为?我该如何解决它才能成功下载该网站的西班牙语版本?

答案1

正如您所怀疑的,这可能是由重音字符引起的。这个开放的错误似乎是相关的。

似乎是由 .whtt 标题中的中文文本引起的。有时中文文本会导致 Winhttrack 在与 .whtt 文件相同的文件夹中创建一些垃圾编码文件夹。在这些情况下,下载文件夹中会留下 .html.z 文件,有时会留下 .delayed 或空文件,并出现“解压时出错”消息。

当我使用纯 ASCII 项目名称重试 sam URL 时,成功了。

因此,这似乎是一个编码问题(在某些早期版本中并不存在)。

建议:

  • 尝试一下--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

相关内容