2015-09-05 78 views
2

我想重寫一個正式的Scrapy教程(http://doc.scrapy.org/en/latest/intro/tutorial.html) 代碼與俄羅斯網站habrahabr.ru。Scrapy屈服utf-8

這裏是我的代碼:

import scrapy 


class DmozSpider(scrapy.Spider): 
    name = 'habr' 

    allowed_domains = ['habrahabr.ru'] 

    start_urls = [ 
     'http://habrahabr.ru/interesting/' 
    ] 

    def parse(self, response): 
     yield {'title': response.xpath('//title/text()').extract()[0]} 

返回:{'title': u'\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438/\u0425\u0430\u0431\u0440\u0430\u0445\u0430\u0431\u0440'}

當我嘗試:

yield {'title': response.xpath('//title/text()').extract()[0].encode('utf-8')} 

回報:

{'title': '\xd0\x98\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xb5\xd1\x81\xd0\xbd\xd1\x8b\xd0\xb5 \xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd0\xba\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8/\xd0\xa5\xd0\xb0\xd0\xb1\xd1\x80\xd0\xb0\xd1\x85\xd0\xb0\xd0\xb1\xd1\x80'} 

我怎樣才能改變這是havior?

+0

你想做什麼就做什麼? – Kevin

+0

使用該命令scrapy runspider habrahabr.py -o habra_intresting.json它必須將標題寫入json文件 –

+1

您向我們展示了它實際輸出的內容,但不是您希望它輸出的內容。 – Kevin

回答

1

如果我明白你的意思,你會感到困惑,因爲你得到的價值不像西里爾文。但實際上一切都很好,你會得到正確的價值。該字符串只是自動編碼爲unicode。要查看可讀/西里爾值,你可以這樣做:

#Python - 2 
title = u'\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438/\u0425\u0430\u0431\u0440\u0430\u0445\u0430\u0431\u0440' 
print(title.encode('utf-8')) 


#Python - 3 
title = u'\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438/\u0425\u0430\u0431\u0440\u0430\u0445\u0430\u0431\u0440' 
print(title) 

結果將是:

Интересные публикации/Хабрахабр