我正试着用俄语网站habrahabr.ru重写一个官方的刮擦教程(http://doc.scrapy.org/en/latest/intro/tutorial.html)代码。
下面是我的代码:
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'}如何更改此行为?
发布于 2019-07-16 16:12:59
转到setting.py文件并将FEED_EXPORT_ENCODING选项设置为utf-8。
FEED_EXPORT_ENCODING = "utf-8"
这将解决您的问题。
发布于 2017-03-30 18:30:18
如果我没弄错,你会感到困惑,因为你得到的值看起来不像是西里尔文文本。但实际上一切都很好,你得到了正确的值。该字符串已自动编码为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)结果将是:
Интересные публикации / Хабрахабрhttps://stackoverflow.com/questions/32413311
复制相似问题