Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用w3m转储html源代码会产生意外的字符/符号_Html_Http_W3m - Fatal编程技术网

使用w3m转储html源代码会产生意外的字符/符号

使用w3m转储html源代码会产生意外的字符/符号,html,http,w3m,Html,Http,W3m,作为w3m的新用户,我正在尝试做一些基本的工作,如: w3m -dump_source nytimes.com > nytimes.html 产生的输出给出了疯狂的字符和符号。但是,当我使用w3mnytimes浏览时,它会正确加载,我甚至可以使用v查看HTML 此外,当我尝试: w3m -dump_extra nytimes.com > nytimes.html 除了HTML源代码外,我完全可以获得与该站点相关的所有额外信息 任何帮助都将不胜感激。默认情况下,w3m通过发送以下H

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

w3m -dump_source nytimes.com > nytimes.html
产生的输出给出了疯狂的字符和符号。但是,当我使用
w3mnytimes
浏览时,它会正确加载,我甚至可以使用
v
查看HTML

此外,当我尝试:

w3m -dump_extra nytimes.com > nytimes.html
除了HTML源代码外,我完全可以获得与该站点相关的所有额外信息

任何帮助都将不胜感激。

默认情况下,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识别的格式,则
-f
选项会使gunzip复制输入数据而不更改标准输出。根据文档,您还应该传递
--stdout
选项,但是管道命令应该将结果打印到标准输出,即使没有此选项


注意,服务器可能会使用
bzip2
中压缩的内容进行响应。在这种情况下,您可以通过
bunzip2-f
命令来传输输出。

非常感谢Ruslan。一切都很顺利。一个后续问题…有没有办法暂停w3m加载页面源代码5秒钟。有些网站的加载速度不足以捕获html。Tx.@user1311034,你是说连接/读取超时吗?我在w3m中找不到这样的选项。如果需要设置超时,可以使用支持
--timeout
--dns timeout
--read timeout
--connect timeout
选项的
wget
工具。如果答案解决了问题,请接受它。