python异常.UnicodeDecodeError : 'ascii' codec can't decode byte 0xa7 in

标签 python python-2.7 scrapy

我在 python 中使用 scrapy,我在 python 项目管道中有这段代码

def process_item(self, item, spider):
        import pdb; pdb.set_trace()
        ID = str(uuid.uuid5(uuid.NAMESPACE_DNS, item['link']))

我遇到了这个错误:

        Traceback (most recent call last):
          File "C:\Python27\lib\site-packages\scrapy-0.20.2-py2.7.egg\scrapy\mid
dleware.py", line 62, in _process_chain
            return process_chain(self.methods[methodname], obj, *args)
          File "C:\Python27\lib\site-packages\scrapy-0.20.2-py2.7.egg\scrapy\uti
ls\defer.py", line 65, in process_chain
            d.callback(input)
          File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 3
82, in callback
            self._startRunCallbacks(result)
          File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 4
90, in _startRunCallbacks
            self._runCallbacks()
        --- <exception caught here> ---
          File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 5
77, in _runCallbacks
            current.result = callback(current.result, *args, **kw)
          File "General_Spider_code_version_2\pipelines.py", line 7, in process_
item
            ID = str(uuid.uuid5(uuid.NAMESPACE_DNS, item['link']))
          File "C:\Python27\lib\uuid.py", line 549, in uuid5
            hash = sha1(namespace.bytes + name).digest()
        exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xa7 in p
osition 1: ordinal not in range(128)

我尝试调试 item['link']

这是结果

-> ID = str(uuid.uuid5(uuid.NAMESPACE_DNS, item['link']))
(Pdb) item['link']
u'http://dubai.dubizzle.com/property-for-rent/residential/apartmentflat/2014/4/6
/palm-jumeirah-abu-keibal-3-br-maid-partial-2/?back=ZHViYWkuZHViaXp6bGUuY29tL3By
b3BlcnR5LWZvci1yZW50L3Jlc2lkZW50aWFsL2FwYXJ0bWVudGZsYXQv&pos=1'
(Pdb)

如您所见,item['link'] 是 unicode

编辑1

当我将 item['link'] 更改为任何其他属性(如 item['date'] 时,代码可以完美运行

最佳答案

使用 .encode('utf-8') 将 unicode 字符串编码为字节字符串,它应该可以工作:

str(uuid.uuid5(uuid.NAMESPACE_DNS, item['link'].encode('utf-8')))

关于python异常.UnicodeDecodeError : 'ascii' codec can't decode byte 0xa7 in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23944571/

相关文章:

python - 使用 scrapy 抓取特定的表格元素

python - scrapycrawl MySpider -o items.json 每行输出一个 json 对象

python - 信号仅在主线程中有效

python - 向 DropDown 添加可变数量的控件 - 弱引用对象不再存在

python - 如何实现在 Qt Designer 中定义的信号/槽

python - 在 2.7.6 上安装 Python 2.7.9

python - 我想在我的 odoo | 中添加 'show more comments..' 按钮openerp模块

python 意外的属性错误

python - pytz 奇怪的时区问题

python - 与 Python 2 相比,Python 3 上的 Tensorflow 更慢