【问题标题】:Encoding string in scrapy and dropping to JSON在scrapy中编码字符串并丢弃到JSON
【发布时间】:2019-05-09 23:57:09
【问题描述】:

我需要使用 Scrapy 从使用非英语语言(主要是东欧语言)的网站上抓取文本数据。当 Scrapy 完成后,它需要将抓取的数据转换为 JSON 以供进一步使用。

问题是,如果我像这样抓取文本:

i['title'] = response.xpath('//home/title//text()').extract_first()

如果不对其进行编码,Scrapy 会抛出如下内容:

UnicodeEncodeError: 'charmap' codec can't encode character '\u0107' in position 103: character maps to <undefined>

另一方面,如果我对它进行编码,并尝试使用 json.dumps() 处理它,我会收到 TypeError,因为 json 无法序列化字节。我看过这个解释 (How to encode bytes in JSON? json.dumps() throwing a TypeError),但它用处不大,因为我需要使用 utf-8 或 utf-16,而不是 ascii。

知道如何解决这个问题吗?

【问题讨论】:

  • 发布整个日志输出比单行回溯更有用。
  • 问题可能是数据没有以 UTF-8 格式写入文件。没有看到你的代码,我只能推测。但是如果是这种情况你需要添加: open('filename', 'w', encoding='utf-8') as f:
  • @D_rock 请分享您要抓取的网站或一段麻烦的html

标签: python json scrapy


【解决方案1】:

你看过响应头了吗?它告诉你什么编码?我可以想象它告诉你另一种编码而不是实际编码。

Pythons解码函数有一个参数错误('strict', 'replace', 'ignore'),你可以用它来调试和发现问题'

对不起,这更像是评论而不是答案,但我还不能评论(代表太少)

【讨论】:

    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2013-03-12
    相关资源
    最近更新 更多