5

作为 w3m 的新用户,我正在尝试做一些基本的事情,例如:

w3m -dump_source nytimes.com > nytimes.html

产生的输出给出了疯狂的字符和符号。但是,当我使用 浏览时w3m nytimes,它会正确加载,我什至可以使用v.

当我尝试时进一步:

w3m -dump_extra nytimes.com > nytimes.html

我完美地获得了与该站点相关的所有额外信息,除了 HTML 源代码。

任何帮助,将不胜感激。

4

1 回答 1

7

默认情况下,w3m通过发送以下 HTTP 标头从服务器请求压缩输出:

Accept-Encoding: gzip, compress, bzip, bzip2, deflate

标头的值可能会因w3m的版本而异,但事实是最新版本的程序使用标头从主机请求压缩Accept-Encoding输出。您可以使用以下命令找出确切的标题:

w3m -dump_source -reqlog nytimes.com > /dev/null

请求和响应标头将记录到~/.w3m/request.log文件中。

您可以通过覆盖标头来请求未压缩版本,如下所示:

w3m -dump_source nytimes.com -o accept_encoding='identity;q=0'

甚至

w3m -dump_source nytimes.com -o accept_encoding='*;q=0'

或者,通过管道解压缩输出:

w3m -dump_source nytimes.com | gunzip -f

如果输入数据不是 gunzip 识别的格式,该选项会导致 gunzip 复制输入数据而不更改-f标准输出。根据文档,您还应该传递选项,但即使没有此选项,管道命令也应将结果打印到标准输出。--stdout

请注意,服务器可能会以bzip2. bunzip2 -f在这种情况下,您可以通过命令管道输出。

于 2017-01-22T07:48:19.513 回答