减压错误?

时间:2011-01-30 07:22:56

标签: c# html web gzip

我正在为网站编写一个抓取工具。 它的响应是gzip编码。

虽然解压缩成功,但我无法正确解析特定字段。 我也使用htmlagilitypack来解析它,

字段的解析值只是原始值的一部分 举个例子 : 我只得到/ wEWAwKc04vTCQKb86mzBwKln / PuCg == 而萤火虫显示实际值更长:  / wEWBgKj7IuJCgKb86mzBwKln / PuCgLT250qAtC0 + 8cMAvimiNYD

最后'=='是什么意思? 我假设它代表解压缩器出错了吗?

2 个答案:

答案 0 :(得分:0)

Base64 encoding添加了字符=

编码以下句子

  

人不仅仅因为他的理性,而是来自其他动物的独特激情,这是对心灵的渴望,通过坚持不懈地持续和不知疲倦地产生知识,超越了短暂的激情。任何肉体的快乐。

你会得到

  

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz     IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg     dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmF​​uY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu     dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo     ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4 =

=字符只能出现在Base64字符串的末尾。如果你获得它,这意味着你可能得到了所有的角色;反之亦然,因为该字符用作填充字符,并且在所有Base64实现中并不总是必需的。

答案 1 :(得分:0)

解压缩没有问题。该页面显然已正确解压缩。否则你的软件可能会抛出一个错误,或者你只会看到一堆奇怪的角色。

但是,你得到的是显然采用Base 64编码的ASCII字符串。如果原始二进制数据不是3字节的倍数,则出现最后的等号。这就是所有完美的Base 64数据。

至于为什么你的抓取工具获取与使用Firebug的Firefox不同的数据:我不知道,但可以想象许多原因。这是两个单独的浏览会话,网站可能只是为它们分配不同的会话ID或以某种方式记录会话的一些历史记录。

无论如何,在一天结束时我不明白你的问题。究竟你究竟无法解析什么?你有什么错误吗? field 是什么意思?您是在谈论HTML表单的字段吗?