scrapy抓取到中文,保存到json文件为unicode,如何解决.

http://scrapy-chs.readthedocs.org/zh_CN/latest/intro/overview.html

以上链接是很好的scrapy学些资料.感谢marchtea的翻译.

在学习过程中,碰到一个很棘手的问题: 中文的显示和存储. (中文在控制台显示的为\u77e5\u540d...这样的字符,保存到文件也是这样的)

在网上找了很久,下面这个链接应是最切题的.

http://stackoverflow.com/questions/9181214/scrapy-text-encoding

摘抄如下:

pipelines.py:

 1 import json
 2 import codecs
 3
 4 class JsonWithEncodingPipeline(object):
 5
 6     def __init__(self):
 7         self.file = codecs.open(‘scraped_data_utf8.json‘, ‘w‘, encoding=‘utf-8‘)
 8
 9     def process_item(self, item, spider):
10         line = json.dumps(dict(item), ensure_ascii=False) + "\n"
11         self.file.write(line)
12         return item
13
14     def spider_closed(self, spider):
15         self.file.close()

按照上面的方法,输出到文件就是正常的中文了.

我的测试代码

搜索关键字和链接:
JsonItemExporter ensure_ascii=False
JsonItemExporter uxxx
python输出json文件\uxxx如何转换成中文
Decode and Encode in Python [ http://yangpengg.github.io/blog/2012/12/13/decode-and-encode-in-python/ ]
--
python print输出的是中文但是输出到文件的是\uxxx
http://wklken.me/posts/2013/08/31/python-extra-coding-intro.html

Scrapy : storing the data
http://stackoverflow.com/questions/14073442/scrapy-storing-the-data

scrapy 使用item export输出中文到json文件,内容为unicode码,如何输出为中文?
http://www.lefern.com/question/15837/scrapy-shi-yong-item-exportshu-chu-zhong-wen-dao-jsonwen-jian-nei-rong-wei-unicodema-ru-he-shu-chu-wei-zhong-wen/

how to put in json utf-8 symbols, not their codes?
https://groups.google.com/forum/#!msg/scrapy-users/rJcfSFVZ3O4/ZYsD7CMoCKMJ

scrapy text encoding
http://stackoverflow.com/questions/9181214/scrapy-text-encoding
时间: 2024-10-25 14:53:20

scrapy抓取到中文,保存到json文件为unicode,如何解决.的相关文章

关于爬取数据保存到json文件,中文是unicode解决方式

流程: 爬取的数据处理为列表,包含字典.里面包含中文, 经过json.dumps,保存到json文件中, 发现里面的中文显示未\ue768这样子 查阅资料发现,json.dumps 有一个参数.ensure_ascii =true,  它会将不是ascii字符的转义为json 字符串. 如果是false ,不是ascii字符的会包含在里面,即如果是中文就会保存中文. 但是我认为json这样写是有道理的. 用requests模块, requests.post(url,json=handled_da

VB.NET 将JSON格式的字符串保存到XML文件中

1.关于本文 这几天打算写一个工具类JsonXmlHelper,用来进行用XML来保存JSON格式文件的工作.该工具类中要实现2个最主要的函数: 1)将JSON格式的内容写入到地址为address的XML中:WriteJsonToXml 2)把函数1中构造的XML文件恢复成JSON格式文档:RecoverJsonFromXml 函数1的实现将在本文中给出,函数2的实现将在以后发表的博文中给出 2.代码说明 1)添加引用:Newtonsoft.Json.dll 2)导入库 'JSON解析相关函数,

JTextArea内容保存到txt文件上,如何实现换行

解决办法: 如果是采用流的方式一行一行写到文件中,可以把FileWriter换为PrintWriter,然后调用PrintWriter的println()方法. byte fileContent[] = getJTextArea().getText().replaceAll("\n", "\r\n").getBytes();//此处主要是为了在Windows中实现换行操作 FileWriter fw=new FileWriter(file); String str=

转:ffmpeg学习(二) 通过rtsp获取H264裸流并保存到mp4文件

本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h464裸流并保存到mp4文件中. 1.VS2010建立VC++  win32控制台项目 2.在工程目录下建立lib目录和include目录,将已编译好的lib拷打lib下,include拷到include下,dll拷到Debug目录下 3.工程属性--配置属性--VC++目录--包含目录,添加ffmpeg头文件目录及其他第三方头文件目录 链接器--常

内核模块遍历进程和任务队列保存到proc文件中

实现一个模块用它遍历当前进程的父进程和任务队列,并将遍历的结果输出到一个proc 文件中(遍历可以从 current 当前进程开始,父进程遍历到初始化进程,遍历任务队列可以利用 for_each_process 宏). 下面是我的内核模块的实现部分: /************************************************************ * 使用内核模块从当前进程开始先前遍历,知道找到第一个进程为止 * * 并将遍历的结果保存到proc文件中 * ******

[matlab]改变矩阵的大小并保存到txt文件

要完成的任务是,加载一个保存在txt文件中的矩阵, 并把它扩大10倍,并且要再次保存回去 %加载txt文件 >load('Matrix.txt'); %扩大10倍 repmat(Matrix,row column) % 这里的matrix 参数是要对其进行修改的matrix, 其中row是要新建的一个矩阵的行数, 而column是新建矩阵的列数 >Matrix = repmat(Matrix,10,1); % 这个就相当于  将Matrix矩阵 复制了10份,并且是按列排列的, 等同于 Mat

np.savetxt()——将array保存到txt文件,并保持原格式

问题:1.如何将array保存到txt文件中?2.如何将存到txt文件中的数据读出为ndarray类型? 需求:科学计算中,往往需要将运算结果(array类型)保存到本地,以便进行后续的数据分析. 解决:直接用numpy中的方法. 1:numpy.savetxt(fname,X):第一个参数为文件名,第二个参数为需要存的数组(一维或者二维). 2.numpy.loadtxt(fname):将数据读出为array类型. 示例 >>> import numpy as np >>&

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件 shell脚本如下echo "%CPU,%MEM" > cpu_test.csvpid=1 #Can be change by yourselfwhile true do top -bn1 -n 1 -p $pid | tail -1 | awk '{ print $9,$10 }' | sed 's/ /,/' >> cpu_test.csv sleep 2 #delay timedone 脚

Python scrapy爬虫数据保存到MySQL数据库

除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 job_inf 数据表: CREATE TABLE job inf ( id INT (11) NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR (255), salary VARCHAR (255), company VARCHAR (255),