当我在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 -*-
答案 0 :(得分:1)
正如Andrea已经提到的那样,当你混合unicode
和str
个对象时,这就是结果。 Scrapy(http://doc.scrapy.org/en/latest/topics/selectors.html)的文档说像.css()
这样的方法返回unicode对象,因此text
的类型为unicode
,key
的类型必须为{{1} }}
str
可能是本机Windows文本编码中的编码字符0xe9
。所以要解决这个问题,只需将您的密钥转换为Unicode:
é
以下两个链接可以帮助您自己识别问题:
http://www.joelonsoftware.com/articles/Unicode.html
https://pythonhosted.org/kitchen/unicode-frustrations.html
仅供参考:此修复程序适用于Python 2.x。