如何从小白到入门,再通往大牛? 来分享一下学习的途径。
1
kindjeff 2016-09-19 09:50:24 +08:00 via iPhone
需求驱动学习。两年前就粗略的学过,用来计算一堆一堆物理实验的数据;后来看了廖雪峰的教程,开始作为主力语言来用;要处理或者生成一些图片,就去看 Pillow 的文档;要爬东西,学了 requests 和 bs ;要多线程 /协程,去看了 gevent 和 3.5 的 asyncio 库。还有要帮人做网站要自动发帖这样下来各种网络协议也看了。 asyncio 库里的 StreamReader 读出来的 gzip 过的数据解压不能,这两天在看压缩的书……
|
2
sivacohan 2016-09-19 22:13:44 +08:00 via Android
@kindjeff gzip 如果是 http 的话,解压时 window size ,写 31 。
|
3
jimzhong 2016-09-19 22:16:25 +08:00
需求驱动啊,先看官方文档,然后根据你的需求继续学习相关的库。
|
4
kindjeff 2016-09-19 23:08:21 +08:00
@sivacohan 谢谢解释,但是不太懂。不知道为什么,用 asyncio 的 StreamReader 读入的数据是这样的
![]( http://o6lazlt4g.bkt.clouddn.com/1.png) 用 http.client 读出来的是这样 ![]( http://o6lazlt4g.bkt.clouddn.com/2.png) 很像但是不一样~~后者可以直接 gzip.decompress()出来,前者不行。 |
5
sivacohan 2016-09-20 01:19:16 +08:00 via Android 1
@kindjeff
第一个是 stream 里面的实际的东西。第二个应该是被处理过了。 第二个不说了,因为不知道具体怎么处理的。说第一个。 你这个响应应该是 content-encoding 为 gzip , transfer-encoding 为 chunked 。 gzip 不用说了, body 里的东西解压就可以了,我说的 31 是 decompress 的第二个参数。 你解压不了是因为这是 chunked 的数据,格式如下 该 trunk 的字节数\ r \ n 对应的 trunk 数据\ r \ n trunk 包以 0 \ r \ n \ r \ n 结束 RFC2616 里面有具体关于 trunk 的说明,建议核对一下,记得是这样,可能有误差。 |