2

スクレイピーでこのエラーが発生しています

   File "/usr/lib/pymodules/python2.7/scrapy/selector/factories.py", line 20, in body_as_utf8
   if response.encoding in utf8_encodings:
   exceptions.AttributeError: 'Response' object has no attribute 'encoding'

それを引き起こすコードは、スクレイピースパイダーの次のとおりです

 def parse(self, response):
    hxs = HtmlXPathSelector(response)

URLを解析しようとしています

    http://itunes.apple.com/WebObjects/MZStore.woa/wa/customerReviews?id=382034404%0A

ユーザーエージェント文字列で

   iTunes/10.2 (Macintosh; U; PPC Mac OS X 10.2)

エラーの可能性はありますか?私には奇妙に思えますが、このコードは他のすべてのスパイダーで常に機能します

4

3 に答える 3

4

私はそれをデバッグする時間がありませんが、私の推測ではresponse、この特定の場合の引数はHtmlResponseまたはではありませんTextResponse

コールバックで行うprint response.__class__

クラスがscrapy.http.response.Response、の場合、URLはテキスト以外の応答を返すと思います。これは明らかに、がないバイトストリームでencodingあり、xpathを使用することはできません。

于 2012-07-11T04:08:58.070 に答える
2

これが非常に役立つかどうかはわかりませんが、あなたや他の人を導くのに役立つかもしれません.

同様のエラーが発生しました:

「応答」オブジェクトには「経過」属性がありません

requests依存関係を更新することで解決されました。

sudo apt-get install python-pip
sudo pip install --upgrade requests

おそらく、属性を提供する依存関係がありますencodingか?

于 2014-04-17T19:43:04.867 に答える