Ubuntu 17.10中Scrapy抓取中文网站用log()记录时显示为乱码

你在这里

Ubuntu 17.10中Scrapy抓取中文网站用log()记录时显示为乱码

我虚拟机中的操作系统是Ubuntu 17.10,安装时使用英文为默认语言,且只安装了命令行模式,未安装图形界面。之后运用scrapy进行中文网站页面抓取实验。该网站为utf-8编码,以下是我的parse函数:
def parse(self, response):
title_list = response.xpath('//ul[@class="sellListContent"]/li/div[1]/div[1]/a/text()').extract()
price_list = response.xpath('//ul[@class="sellListContent"]/li/div[1]/div[6]/div[1]/span/text()').re('[,0-9]+')
desc_list = response.xpath('//ul[@class="sellListContent"]/li/div[1]/div[2]/div/text()').extract()
addr_list = response.xpath('//ul[@class="sellListContent"]/li/div[1]/div[2]/div/a/text()').extract()
image_urls_list = response.xpath('//ul[@class="sellListContent"]/li/a/img/@src').extract()

for i,j,k,l,m in zip(title_list, price_list, desc_list,addr_list,image_urls_list):
self.log("title:%s" % i.encode('utf-8'))
self.log("price:%s" % j.encode('utf-8'))
self.log("descr:%s" % k.encode('utf-8'))
self.log("addr:%s" % l.encode('utf-8'))
self.log("image_urls:%s" % m)

通过xshell连接该虚拟机,运行spcapy crawl ..命令,输出中显示都是乱码,请问是设么原因?

  •  

回答

xshell及其他终端连接linux时中文乱码的原因一般有三种: 
(1)Linux系统的编码问题 
(2)xshell终端的编码问题 
(3)两端的语言编码不一致
因此解决方法:
(1)首先查看Ubuntu(Linux)编码是什么,用locale命令,并确保输出中包含:LANG=en_US.UTF-8,如果没有,则用命令export LANG=en_US.UTF-8将环境变量LANG设置成en_US.UTF-8。
(2)将xshell的编码设置的和Ubuntu一致。打开会话选择窗口,点击对应会话的右键菜单中的“属性”,在打开的“属性”窗口中:“终端”——“转换”——“编码”栏选择“Unicode(UTF-8)”即可。