我正在使用python框架scrapy来废弃数据,这里是我的蜘蛛的代码:
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//h1')
links = hxs.select('//div[@class="pp-title"]')
#sites = hxs.select('//div[@id="yt-lockup-content"] ')
items = []
for site in links:
item = DmozItem()
item['title'] = site.select('a/h1/text()').extract()
item['link'] = site.select('a/@href').extract()
items.append(item)
return items
我使用此蜘蛛在items.json
中收集数据,我使用命令scrapy crawl dmoz -o items.json -t json
运行spider。数据以
[[{"link": ["http://www.ponudadana.hr/Planinarski-dom-Kalnik-2-dana-s-doruckom-za-dvoje-za-149kn-umjesto-300kn-7482_1"], "title": ["Planinarski dom Kalnik - 2 dana s doru\u010dkom za dvoje za 149kn umjesto 300kn!"]},
问题是像č,ž,š,đ,ž
这样的特殊字符存储为\u010
或类似字符,例如,请参阅上面的doru\u010dkom
字,它应该是doručkom
。任何人都可以帮助我,我应该使用一些编码格式吗?
答案 0 :(得分:1)
无论是JSON还是Python unicode字符串文字,\u010d
表示 č
。即使它在JSON中表示如此,当您解码它时,它也将作为正确的字母č
出现。
>>> import json
>>> obj = json.loads("""{"link": ["http://www.ponudadana.hr/Planinarski-dom-Kalnik-2-dana-s-doruckom-za-dvoje-za-149kn-umjesto-300kn-7482_1"], "title": ["Planinarski dom Kalnik - 2 dana s doru\u010dkom za dvoje za 149kn umjesto 300kn!"]}""")
>>> obj['title']
[u'Planinarski dom Kalnik - 2 dana s doru\u010dkom za dvoje za 149kn umjesto 300kn!']
>>> print obj['title'][0]
Planinarski dom Kalnik - 2 dana s doručkom za dvoje za 149kn umjesto 300kn!
Python字符串的相同配置。
>>> u"česnakas"
u'\u010desnakas'
>>> print u"česnakas"
česnakas