Cập nhật: lỗi này có thể được sao chép đơn giản bằng cách chạy này từ dòng lệnh:Scrapy nhện: đối phó với các trang đã sai xác định mã hóa ký tự
scrapy shell http://www.indiegogo.com/Straight-Talk-About-Your-Future
Tôi đang sử dụng Scrapy để thu thập dữ liệu trang web. Mỗi trang tôi cạo tuyên bố được mã hóa UTF-8:
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
Nhưng thỉnh thoảng, các trang chứa byte nằm ngoài của UTF-8, và tôi nhận được lỗi Scrapy như:
exceptions.UnicodeDecodeError: 'utf8' codec can't decode byte 0xe8 in position 131: invalid continuation byte
tôi vẫn cần phải loại bỏ các trang này, mặc dù chúng chứa các ký tự không thể áp dụng. Có cách nào để nói với Scrapy để ghi đè lên mã hóa được khai báo của trang và sử dụng mã khác (nói, UTF-16) thay thế?
Đây là nơi các ngoại lệ được bắt:
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)
Tùy thuộc vào nơi điều này xảy ra, bạn có thể thêm my_string.encode ('utf8') để phá vỡ lỗi này. –