scrapy:UnicodeDecodeError:' ascii'编解码器不能解码位置1中的字节0xe9:序数不在范围内(128)

时间:2015-08-23 20:00:39

标签: python web-scraping scrapy

当我在Scrapy Framework中使用accent参数时,我的蜘蛛崩溃了这个错误:

Traceback (most recent call last):  
  File "c:\python27\lib\site-packages\twisted\internet\defer.py", line 577, in _ runCallbacks
    current.result = callback(current.result, *args, **kw)  
  File "C:\Users\DoricTsappi\Downloads\newproject\myscrap\myscrap\spiders\scrap2.py", line 44, in parse
    occdoc = text.lower().count(key.lower())  
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 1: ordinal not in range(128)

这是我的代码:

# -*- coding: utf-8 -*-

1 个答案:

答案 0 :(得分:1)

正如Andrea已经提到的那样,当你混合unicodestr个对象时,这就是结果。 Scrapy(http://doc.scrapy.org/en/latest/topics/selectors.html)的文档说像.css()这样的方法返回unicode对象,因此text的类型为unicodekey的类型必须为{{1} }}

str可能是本机Windows文本编码中的编码字符0xe9。所以要解决这个问题,只需将您的密钥转换为Unicode:

é

以下两个链接可以帮助您自己识别问题:

http://www.joelonsoftware.com/articles/Unicode.html

https://pythonhosted.org/kitchen/unicode-frustrations.html

仅供参考:此修复程序适用于Python 2.x。