【问题标题】:How to scrape data with special characters?如何使用特殊字符抓取数据?
【发布时间】:2013-11-14 06:49:47
【问题描述】:

我正在使用 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 运行蜘蛛。数据以格式存储

[[{"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。谁能帮帮我,我应该使用一些编码格式吗?

【问题讨论】:

  • 能否修复第一行的缩进错误。

标签: python json scrapy


【解决方案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

【讨论】:

  • 我试过但得到这个错误文件“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() 打印标题打印链接
  • AFAIK 'charmap' 表示 Windows CMD 存在问题,无法很好地处理 unicode。
  • thx,这是 cmd 的问题,我用空闲的 python 运行脚本,并正常打印工作,thx :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多