【发布时间】:2014-07-02 16:31:08
【问题描述】:
过去两周我很难处理一些我用 scrapy 抓取的数据。我在 windows7 上使用 python 2.7。这是通过 scrapy xpath 选择器抓取和提取的一小段数据:
{'city': [u'Mangenberger Str.\xa0162', u'42655\xa0Solingen']}
这些数据是从一个 utf-8 编码的页面中抓取的,至少它是这么说的:
Content-Type: text/html;charset=utf-8
所以我相信我需要对它们进行解码才能得到:
Mangenberger Str. 16242655 Solingen
这是我在控制台中得到的:
>>> s='Mangenberger Str.\xc2\xa016242655\xc2\xa0Solingen'
>>> s1=s.decode('utf-8')
>>> print s1
Mangenberger Str. 16242655 Solingen
完美! 但这与我运行脚本时收到的内容相去甚远。我尝试编码和解码:
uft-8 encoding
{'city': 'Mangenberger Str.\xc2\xa016242655\xc2\xa0Solingen'}
exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 17:
utf-8-sig encoding
{'city': '\xef\xbb\xbfMangenberger Str.\xc2\xa016242655\xc2\xa0Solingen'}
exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0:
utf-8 decoding
exceptions.UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 17:
utf-8-sig decoding
exceptions.UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 17:
编码:
item['city']= "".join(element.select('//div[@id="bubble_2"]/div/text()').extract()).encode('utf-8')
解码代码:
item['city']= "".join(element.select('//div[@id="bubble_2"]/div/text()').extract()).decode('utf-8')
据我了解,当我尝试解码此字符串时,BOM 字节是问题所在?但是为什么它在我的控制台中没有问题并且一旦我运行scrapy就不能工作(错误)?
【问题讨论】:
标签: python unicode scrapy decode encode