爬取京东的网站: 'Response' object has no attribute 'body_as_unicode'

太阳底下 发布于 2014/07/31 10:17
阅读 2K+
收藏 0
rt,使用scrapy shell测试语句:scrapy shell "http://list.jd.com/list.html?cat=670,671,2694"  也会出现exceptions.AttributeError: 'Response' object has no attribute 'body_as_unicode'这个问题,之前爬了几个其他网站都可以,请教一下这是什么问题呢?
加载中
0
李三石
李三石
京东的返回数据做gzip 压缩了吧,试试先解压
0
黑白IV记忆

简单的看了下源代码,Response是TextResponse的基类,在TextResponse中添加了一些Response没有的方法,其中就有body_as_unicode。HtmlResponse和XmlResponse又继承的TextResponse,所以后面3个类都是有body_as_unicode方法的。

再看上面的问题为什么京东返回的Response没有body_as_unicode方法的。在responsetypes.py中有个ResponseTypes类,它的from_args函数会判断该次请求返回什么类型的Response,在京东的请求中根据几个不同的指标都没查询到该使用什么,所以返回的是Response基类。这个类没有body_as_unicode方法。所以会报上面的错误。

0
数据工厂
数据工厂
http://www.shenjianshou.cn/index.php?r=market/configDetail&pid=99
返回顶部
顶部