爬虫"搜狗微信公众号"遇到的一些问题——Requests 解析html gzip压缩

一直都觉得微信公众号是爬虫的理想对象,获取到的对象url在手机上展示非常的赞,广告排版都在能接受的范围内,正好最近2练手python爬虫,果断的上了。
首先分析一下搜狗微信公众号的手机端:


Chrome

这里的请求非常简单 分析之后可以发现基本就是:
url='http://weixin.sogou.com/wapindex/wap/0612/wap_9/%d.html'%i
变换的也就是后面的数字
然后正常使用requests去请求:
response=requests.get(url,headers=mergedHeaders)
然后就乱码了,这里我尝试了很多解码方式,但是都解决不了,当然最后折腾了好久之后发现是html的gzip压缩问题,在网络上查询基本都是urllib2的解决办法
重新查询requests的官方文档发现了我需要的:

requests官方文档

很明显,这里说了使用response.content方法
Requests会自动解码gzip,不过返回的是byte内容,所以我们只需要将byte to String 就可以了,好,尝试一下
转换方法:

def byteToString(byteData):
    '''
    将byte转化为String
    :parambyteData:
    :return: String
    '''
    return BytesIO(byteData).read().decode()

然后请求内容:

response=requests.get(url,headers=mergedHeaders)
ifresponse.headers['Content-Encoding']=='gzip':
    result=BytesIO(response.content).read().decode()
    return result
else:
    return response.text

问题解决

问题解决

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一直都觉得微信公众号是爬虫的理想对象,获取到的对象url在手机上展示非常的赞,广告排版都在能接受的范围内,正好最近...
    Ugly_K阅读 561评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 基础知识 HTTP协议 我们浏览网页的浏览器和手机应用客户端与服务器通信几乎都是基于HTTP协议,而爬虫可以看作是...
    腩啵兔子阅读 1,512评论 0 17
  • 很多的微信公众号都提供了质量比较高的文章阅读,对于自己喜欢的微信公众号,所以想做个微信公众号爬虫,爬取相关公众号的...
    Evtion阅读 12,111评论 8 23
  • 刺秦 1. 自白 我叫荆轲,荆轲的荆,荆轲的轲。 确切的说,我应该是齐国人,但却在卫国出生。在卫国的时候,小朋友们...
    bybateer阅读 613评论 14 5