我正在使用 HTTrack 下载一个网站,但结果参差不齐。多个目录返回了同一 HTML 文件的 2 个或更多版本。任何给定目录中的这些重复项可能包括:
- 一个名为 índice.html(注意重音符号 í)的文件在浏览器中显示为乱码。仔细研究后发现,这是一个扩展名不正确的 .z 存档,其中包含正确的 HTML 文件
- 一个名为 índice.html.z 的文件,它是一个包含该文件可读版本的档案
- 一个名为 índice-2.html 的文件,它是原始 índice.html 的良好版本,在浏览器中完全可读
- 一个名为 índice-2.html.z 的文件,它是一个包含相同文件的存档,但有时该文件的大小与第一个文件略有不同
- 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
。