Python Scrapy输出馈送国际unicode字符(例如日语字符)
我是python和scrapy的新手,我正在学习dmoz教程。作为教程建议的起始URL的一个次要变体,我从dmoz示例站点选择了一个日语类别,并注意到我最终得到的提要导出显示的是unicode数值,而不是实际的日语字符 似乎我需要以某种方式使用,但我不确定如何让我的爬行器使用该对象而不是基本响应对象Python Scrapy输出馈送国际unicode字符(例如日语字符),python,unicode,scrapy,Python,Unicode,Scrapy,我是python和scrapy的新手,我正在学习dmoz教程。作为教程建议的起始URL的一个次要变体,我从dmoz示例站点选择了一个日语类别,并注意到我最终得到的提要导出显示的是unicode数值,而不是实际的日语字符 似乎我需要以某种方式使用,但我不确定如何让我的爬行器使用该对象而不是基本响应对象 我应该如何修改代码以在输出中显示日文字符 如何去掉方括号、单引号和包装输出值的“u” 最终,我希望有一个say的输出 オンラインショップ(这些是日文字符) 而不是 [u'\u30aa\u30f3\u
FEED_URI = 'items.csv'
FEED_FORMAT = 'csv'
输出屏幕截图:
(很抱歉,我没有足够的SO点数来发布图像)当您从页面中刮取文本时,它以Unicode格式存储 您要做的是将其编码为UTF8之类的内容
unicode_string.encode('utf-8')
此外,当您使用选择器提取文本时,即使只有一个结果,也会将其存储在列表中,因此您需要选择第一个元素。刮取工作正常,问题在于如何将值写入磁盘。你是如何调用Scrapy来运行代码的?@Thomas我认为问题在于文本嵌入了列表中。一旦我从列表中提取它们,unicode字符就会正确显示。谢谢,我最终意识到它们存储在列表中,并最终使用
if item['title']:item['title']=item['title'].pop()
来提取它们。至于编码,在我提取后,它们会自动转换为正确的字符。顺便说一句,如果需要,我如何将TextResponse转换为Response?@fortuneRice我在解析泰米尔语内容时也有同样的问题。请共享解决此问题的代码。(我不明白你在哪里使用了.pop())@Mugunth删除的文本存储在列表数据结构中。.pop()用于从列表中提取项。希望有帮助。很抱歉再次打扰你。我不知道如何使用列表中的.pop()将数据存储到csv中。例如:我的解析定义类似于以下://for site in site:item=DmozItem()item['title']=site.select('a/text()).extract()item['link']=site.select('a/@href').extract()item['desc']=site.select('text()').extract()items.append(item)return items//如果您能让我知道这个.pop()在代码中应该放在哪里,那将很有帮助。
unicode_string.encode('utf-8')