zoukankan      html  css  js  c++  java
  • scrapy抓取的页面中文会变成unicode字符串

    不了解编码的,需要先补下:http://www.cnblogs.com/jiangtu/p/6245264.html

    在学习&使用scrapy抓取网上信息时,发现scrapy 会将含有中文的field输出为 unicode字符串形式。

    这个原因的根本是,在python中使用json序列化时,如果使用 ensure_ascii 编码就会出现这个问题。并且,json.dumps默认使用的也是这个编码。

    在scrapy中,JsonItemExporter 也是默认使用的 ensure_ascii 编码:

    1 class JsonItemExporter(BaseItemExporter):
    2 
    3     def __init__(self, file, **kwargs):
    4         self._configure(kwargs, dont_fail=True)
    5         self.file = file
    6         kwargs.setdefault('ensure_ascii', not self.encoding) # look here
    7         self.encoder = ScrapyJSONEncoder(**kwargs)
    8         self.first_item = True

    可以看到,在第六行,如果不传递值的话,就会默认使用 ensure_ascii 编码。

    所以,我们只要在 pipeline 中实例化 exporter 时,传入编码方式即可:

    exporter = MyJsonExporter(fi, encoding='utf-8')

    然后就ok了。

    JSON.dumps()同理。

  • 相关阅读:
    String方法
    多态
    观察者模式
    ArrayList和LinkList
    唐岛湾
    AForge.Net C#的操作视频,照片读写功能
    JqGrid填坑
    日常点滴
    日常点滴
    EF Core 填坑记录
  • 原文地址:https://www.cnblogs.com/jiangtu/p/6637640.html
Copyright © 2011-2022 走看看