Update: dieser Fehler kann dies einfach durch Ausführen von der Befehlszeile wiedergegeben werden:Scrapy Spinne: mit Seiten zu tun, die falsch-definierten Zeichencodierung
scrapy shell http://www.indiegogo.com/Straight-Talk-About-Your-Future
Ich verwende Scrapy zu eine Website crawlen. Jede Seite I Ansprüche kratzen codierte UTF-8 werden:
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
Aber gelegentlich enthalten die Seiten Bytes, die außerhalb von UTF-8 fallen, und ich bekomme Scrapy Fehler wie:
exceptions.UnicodeDecodeError: 'utf8' codec can't decode byte 0xe8 in position 131: invalid continuation byte
ich noch müssen diese Seiten abkratzen, auch wenn sie nicht mappbare Zeichen enthalten. Gibt es eine Möglichkeit, Scrapy mitzuteilen, dass die deklarierte Codierung der Seite überschrieben werden soll, und stattdessen eine andere (z. B. UTF-16) verwenden soll?
Hier ist, wo die Ausnahme gefangen wird:
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)
Je nachdem, wo dies geschieht, können Sie my_string.encode ('utf8') hinzufügen, um diesen Fehler zu umgehen. –