3
回答
爬取京东的网站: 'Response' object has no attribute 'body_as_unicode'
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
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'这个问题,之前爬了几个其他网站都可以,请教一下这是什么问题呢?
举报
太阳底下
发帖于3年前 3回/1K+阅
共有3个答案 最后回答: 2年前

简单的看了下源代码,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方法。所以会报上面的错误。

顶部