更新:このエラーは、コマンド ラインからこれを実行するだけで再現できます。
scrapy shell http://www.indiegogo.com/Straight-Talk-About-Your-Future
Scrapy を使用して Web サイトをクロールしています。私がスクレイピングしたすべてのページは、UTF-8 でエンコードされていると主張しています。
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
しかし、ページに UTF-8 の範囲外のバイトが含まれている場合があり、次のような Scrapy エラーが発生します。
exceptions.UnicodeDecodeError: 'utf8' codec can't decode byte 0xe8 in position 131: invalid continuation byte
マップできない文字が含まれていても、これらのページをスクレイピングする必要があります。ページの宣言されたエンコーディングをオーバーライドし、代わりに別の (たとえば、UTF-16) を使用するように Scrapy に指示する方法はありますか?
例外がキャッチされている場所は次のとおりです。
2012-05-30 14:43:20+0200 [igg] ERROR: Spider error processing <GET http://www.site.com/page>
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/twisted/internet/base.py", line 1178, in mainLoop
self.runUntilCurrent()
File "/Library/Python/2.7/site-packages/twisted/internet/base.py", line 800, in runUntilCurrent
call.func(*call.args, **call.kw)
File "/Library/Python/2.7/site-packages/twisted/internet/defer.py", line 368, in callback
self._startRunCallbacks(result)
File "/Library/Python/2.7/site-packages/twisted/internet/defer.py", line 464, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/Library/Python/2.7/site-packages/twisted/internet/defer.py", line 551, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/Library/Python/2.7/site-packages/scrapy/core/spidermw.py", line 61, in process_spider_output
result = method(response=response, result=result, spider=spider)