Wget
Wget返回二進製而不是html?
我正在使用 wget 下載靜態 html 頁面。W3C Validator 告訴我該頁面是用 UTF-8 編碼的。然而,當我下載後對文件進行分類時,我得到了一堆二進制廢話。我在 Ubuntu 上,我認為預設編碼是 UTF-8?這就是我的語言環境文件似乎所說的。為什麼會發生這種情況,我該如何糾正?
此外,看起來像
Content-Encoding: gzip
。也許這會產生差異?這是一個簡單的請求:
wget https://www.example.com/page.html
我也試過這個:
wget https://www.example.com/page.html -q -O - | iconv -f utf-16 -t utf-8 > output.html
哪個返回:
iconv: illegal input sequence at position 40
對文件進行分類會返回如下所示的二進製文件:
l�?חu�`�q"�:)s��dġ__��~i��6n)T�$H�#���QJ
結果
xxd output.html | head -20
:00000000: 1f8b 0800 0000 0000 0003 bd56 518f db44 ...........VQ..D 00000010: 107e a6bf 62d4 8a1e 48b9 d8be 4268 9303 .~..b...H...Bh.. 00000020: 8956 082a 155e 7a02 21dd cbd8 3bb6 97ae .V.*.^z.!...;... 00000030: 77cd ee38 39f7 a1bf 9d19 3bb9 0bbd 9c40 w..89.....;....@ 00000040: 2088 12c5 de9d 9df9 be99 6f67 f751 9699 .........og.Q.. 00000050: 500d 1d79 5eee a265 faec 7151 e4ab 6205 P..y^..e..qQ..b. 00000060: 4dd3 0014 1790 e7d0 77c0 ef2f cbf8 cde3 M.......w../.... 00000070: cf1f 7d6c 7d69 ec16 d0d9 c67f 7d7d 56c9 ..}l}i......}}V. 00000080: 04c5 eb33 35fc e49e 2563 e908 ca10 0d45 ...35...%c.....E 00000090: 31ce afcf a022 e77a 34c6 fa46 46be d88f 1....".z4..FF... 000000a0: a41e ab79 446d 76d6 702b cf45 9e7f ba77 ...yDmv.p+.E...w 000000b0: 7dc2 779c 274e cc18 483c 3a12 0f75 f07c }.w.'N..H<:..u.| 000000c0: 5e63 67dd b886 ab48 e550 b5c4 f0e3 db0d ^cg....H.P...... 000000d0: 54c1 85b8 8627 2ff3 2ff3 17f9 0626 d31d T....'/./....&.. 000000e0: d9a6 e5b5 4076 663f 94ec 7b5a 17cf 7ade ....@vf?..{Z..z. 000000f0: 00d3 0d9f 4fcc d733 ef8d a0bb 0a06 c7eb ....O..3........ 00000100: b304 6fb1 b1cc 18ed 90e0 8710 43aa 424f ..o.........C.BO 00000110: 50c7 d0c1 2bac 09be 4d1c 2566 335e 666c P...+...M.%f3^fl 00000120: 1e20 951d 58fd 6774 f3e9 f317 749f 7fc4 . ..X.gt....t... 00000130: d651 cdca f5a7 b0a5 aea4 08ab 055c e4c5 .Q...........\..
此外,奇怪的是,輸出文件似乎在 TextWrangler 中正確打開!
這是一個gzip壓縮文件。您可以通過執行命令找出這一點,該命令從數據中的幻數
file
中找出文件格式(這就是 Text Wrangler 等程序如何確定文件也被壓縮的方式):file output.html wget -O - … | file -
伺服器(我從您顯示的內容中猜到了)正在發送壓縮數據並正確設置標頭
Content-Encoding: gzip
但 wget 不支持。在最近的版本中, wget 發送
Accept-encoding: identity
, 告訴伺服器不要壓縮或以其他方式編碼數據。在舊版本中,您可以手動發送標頭:wget --header 'Accept-encoding: identity' …
然而,這個特定的伺服器似乎已損壞:即使被告知不要以任何方式對數據進行編碼,它也會發送壓縮數據。因此,您必須手動解壓縮數據。
wget -O output.html.gz … && gunzip output.html.gz