前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy-笔记二 中文处理以及保存中文数据

Scrapy-笔记二 中文处理以及保存中文数据

作者头像
十四君
发布2019-11-27 23:32:58
5860
发布2019-11-27 23:32:58
举报
文章被收录于专栏:Urlteam

学习自:http://blog.csdn.net/u012150179/article/details/34450547

输出中文:

首先是使用scrapy shell url 来尝试某个中文页面中获取到一个中文字符串

代码语言:javascript
复制
scrapy shell http://blog.csdn.net/u012150179/article/details/34450547

这个url链接进行元素审查,观察发现,h4下的text部分是中文的.编写sel.xpath

代码语言:javascript
复制
sel.xpath('//h4/text()').extract()

获取到了

代码语言:javascript
复制
In [1]: sel.xpath('//h4/text()').extract()
shell:1: ScrapyDeprecationWarning: "sel" shortcut is deprecated. Use "response.xpath()", "response.css()" or "response.selector" instead
Out[1]: 
[u'\u63d0\u53d6\u7f51\u9875\u4e2d\u4e2d\u6587\u5e76\u8f93\u51fa\u6216\u8005\u662f\u4fdd\u5b58\u65f6\u7ecf\u5e38\u4f1a\u51fa\u73b0\u4e00\u4e2a\u95ee\u9898\u662f\u663e\u793a\u7684\u662f\u4e2d\u6587\u5bf9\u5e94\u7684unicode\u7f16\u7801\u800c\u975e\u4e2d\u6587\u672c\u8eab\uff0c\u8fd9\u91cc\u8bb2\u8ff0\u89e3\u51b3\u8fd9\u79cd\u95ee\u9898\u7684\u65b9\u6cd5\u3002',
 u'\u6211\u7684\u540c\u7c7b\u6587\u7ae0',
 u'\u6b64\u535a\u5ba2\u5df2\u4e0d\u518d\u66f4\u65b0\uff0c\u65b0\u535a\u5ba2\u5730\u5740\uff1a\r\n',
 u'GitHub\u4e3b\u9875\uff1a\r\n']

观察是一个列表.将sel部分结果赋值给temp

代码语言:javascript
复制
temp = sel.xpath('//h4/text()').extract()

然后for输出中文

代码语言:javascript
复制
for i in temp[0]:
    print i.encode('utf-8'),

encode()只针对str数据结构,如果不是,可以先转换为str。上面由于得到的title为list类型,所以转换如上。

中文存储

主要代码不长在项目w3c抓取中.可以参考:

https://www.urlteam.cn/2016/06/scrapy-%E5%85%A5%E9%97%A8%E9%A1%B9%E7%9B%AE-%E7%88%AC%E8%99%AB%E6%8A%93%E5%8F%96w3c%E7%BD%91%E7%AB%99/

代码语言:javascript
复制
 11 class W3SchoolPipeline(object):
 12     def __init__(self):
 13         #初始化打开json记录文件数据
 14         #定义编码为utf-8
 15         self.file = codecs.open('w3school_data_utf8.json', 'wb', encoding='utf-8')

这部分设定中文的编码方式

代码语言:javascript
复制
def process_item(self, item, spider):
 18         line = json.dumps(dict(item)) + '\n'
 19         # print line  
 20 
 21         self.file.write(line.decode("unicode_escape"))
 22         return item
 23         #返回类型必须要是item类型

这部分设定unicode_escape的写入方式

“反编码”,别在意名字,随便起的,大意是一串字符,是unicode码,如:‘\u53eb\u6211’,进行反编码后得到其对应的汉字。

  1. f=‘\u53eb\u6211’
  2. print f
  3. print(f.decode(‘unicode-escape’))

结果为:

\u53eb\u6211 叫我

原创文章,转载请注明: 转载自URl-team

本文链接地址: Scrapy-笔记二 中文处理以及保存中文数据

Related posts:

  1. Scrapy-笔记一 入门项目 爬虫抓取w3c网站
  2. Scrapy笔记三 自动多网页爬取-本wordpress博客所有文章
  3. Scrapy笔记四 自动爬取网页之使用CrawlSpider
  4. Scrapy笔记五 爬取妹子图网的图片 详细解析
  5. Scrapy笔记零 环境搭建与五大组件架构
  6. 基于百度IP定位的网站访问来源分析的python实战项目–实践笔记一–ip与经纬信息采集
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-06-202,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输出中文:
  • 中文存储
    • Related posts:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档