Python3中urllib网页解压缩处理——deflate支持
本文最后更新于 481 天前,其中的信息可能已经有所发展或是发生改变。

最近在写一个爬虫,写的很慢,因为能碰到电脑的时间少之又少,而碰到能静下心写代码或者不很困的日子就更少了,不过还好,在900行左右就能结束这个项目。
写的时候遇到了一个问题,因为在我发送得request中加入了允许deflate压缩的信息,于是在抓取到QQ官网那些默认是deflate的压缩类型的时候,就会报错了。
由于想让爬虫尽可能的多支持一些东西,于是在网上找了很长时间,但是并没有找到相关的例子,找的的极少数有关的经试验也是错误的。

于是祭出Google大法(话说Google更换icon了,不错不错,挺好看的)

最终在浩如烟海的讨论中找到了:

import zlib
zlib.decompress(data,-zlib.MAX_WBITS)

但是当时的作者并没有告诉我们是怎么判断deflate压缩的,于是我还要自己找规律去试。
最后试出来:
bytes数据是以” b'\xec\xbd' ” 开头的就是通过deflate压缩的网页

于是加上deflate和gzip的支持:
data是通过urllib抓取网页的数据(通过read()方法得到)

if data.startswith(b'\x1f\x8b'):
    return gzip.decompress(data)
elif data.startswith(b'\xec\xbd'):
    return zlib.decompress(data,-zlib.MAX_WBITS)
else:
    return data

之后我们就得到了解压缩之后的数据。
下面还会有,补一些最近忙没更的。

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇