Python 如何使用特殊字符刮取数据?

Python 如何使用特殊字符刮取数据?,python,json,scrapy,Python,Json,Scrapy,我正在使用python框架scrapy来刮取数据,下面是我的spider的代码: 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-c

我正在使用python框架scrapy来刮取数据,下面是我的spider的代码:

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
中收集数据,通过这个spider,我使用命令
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
。有人能帮我吗,我应该使用一些编码格式吗?

无论是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

无论是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

你能修复第一行的缩进错误吗?你能修复第一行的缩进错误吗?我试过了,但得到了这个错误文件“mongodb.py”,第25行,这是我的打印代码:json_data=open('items.json')data=json.load(json_data)for d in data:link=d['link'][0]link=link.strip()title=d['title']0]title=title.strip()print title print linkAFAIK'charmap'表示Windows CMD的一个问题,它不能很好地处理unicode。thx,这是CMD的问题,我使用空闲python运行脚本,正常打印工作,thx:)我尝试了,但得到了这个错误文件“mongodb.py”,第25行,这里是我的打印代码:json_data=open('items.json')data=json.load(json_data)for d in data:link=d['link'][0]link=link.strip()title=d['title'][0]title=title.strip()打印title打印linkAFAIK'charmap'表示Windows CMD的一个问题,它不能很好地处理unicode.thx,cmd有问题,我用空闲的python运行脚本,并正常打印作业,thx:)