我正在为网站编写一个抓取工具。 它的响应是gzip编码。
虽然解压缩成功,但我无法正确解析特定字段。 我也使用htmlagilitypack来解析它,
字段的解析值只是原始值的一部分 举个例子 : 我只得到/ wEWAwKc04vTCQKb86mzBwKln / PuCg == 而萤火虫显示实际值更长: / wEWBgKj7IuJCgKb86mzBwKln / PuCgLT250qAtC0 + 8cMAvimiNYD
最后'=='是什么意思? 我假设它代表解压缩器出错了吗?
答案 0 :(得分:0)
Base64 encoding添加了字符=
。
编码以下句子
人不仅仅因为他的理性,而是来自其他动物的独特激情,这是对心灵的渴望,通过坚持不懈地持续和不知疲倦地产生知识,超越了短暂的激情。任何肉体的快乐。
你会得到
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4 =
=
字符只能出现在Base64字符串的末尾。如果你获得它,这意味着你可能得到了所有的角色;反之亦然,因为该字符用作填充字符,并且在所有Base64实现中并不总是必需的。
答案 1 :(得分:0)
解压缩没有问题。该页面显然已正确解压缩。否则你的软件可能会抛出一个错误,或者你只会看到一堆奇怪的角色。
但是,你得到的是显然采用Base 64编码的ASCII字符串。如果原始二进制数据不是3字节的倍数,则出现最后的等号。这就是所有完美的Base 64数据。
至于为什么你的抓取工具获取与使用Firebug的Firefox不同的数据:我不知道,但可以想象许多原因。这是两个单独的浏览会话,网站可能只是为它们分配不同的会话ID或以某种方式记录会话的一些历史记录。
无论如何,在一天结束时我不明白你的问题。究竟你究竟无法解析什么?你有什么错误吗? field 是什么意思?您是在谈论HTML表单的字段吗?