【发布时间】: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