mr.*_*r.M 2 encoding scrapy python-2.7
这是网站,我想解析:俄罗斯网站
以下是提取我需要的信息的代码:
# -*- coding: utf-8 -*-
from scrapy.spider import Spider
from scrapy.selector import Selector
from flats.items import FlatsItem
class DmozSpider(Spider):
name = "dmoz"
start_urls = ['http://rieltor.ua/flats-sale/?ncrnd=6510']
def parse(self, response):
sel=Selector(response)
flats=sel.xpath('//*[@id="content"]')
flats_stored_info=[]
flat_item=FlatsItem()
for flat in flats:
flat_item['square']=[s.encode("utf-8") for s in sel.xpath('//div/strong[@class="param"][1]/text()').extract()]
flat_item['rooms_floor_floors']=[s.encode("utf-8") for s in sel.xpath('//div/strong[@class="param"][2]/text()').extract()]
flat_item['address']=[s.encode("utf-8") for s in flat.xpath('//*[@id="content"]//h2/a/text()').extract()]
flat_item['price']=[s.encode("utf-8") for s in flat.xpath('//div[@class="cost"]/strong/text()').extract()]
flat_item['subway']=[s.encode("utf-8") for s in flat.xpath('//span[@class="flag flag-location"]/a/text()').extract()]
flats_stored_info.append(flat_item)
return flats_stored_info
Run Code Online (Sandbox Code Playgroud)
我如何转储到json文件
scrapy crawl dmoz -o items.json -t json
Run Code Online (Sandbox Code Playgroud)
问题是当我替换上面的代码在控制台中打印提取的信息时,如下所示:
flat_item['square']=sel.xpath('//div/strong[@class="param"][1]/text()').extract()
for bla in flat_item['square']:
print bla
Run Code Online (Sandbox Code Playgroud)
该脚本正确显示俄语信息.
但是,当我使用脚本的第一个版本(编码为utf-8)转储sraped信息时,它会写入json文件,如下所示:
[{"square": ["2-\u043a\u043e\u043c\u043d., 16 \u044d\u0442\u0430\u0436 16-\u044d\u0442. \u0434\u043e\u043c", "1-\u043a\u043e\u043c\u043d.,
Run Code Online (Sandbox Code Playgroud)
我怎么能用俄语将信息转储到json文件中?谢谢你的建议.
它被正确编码,只是json库默认转义非ascii字符.
您可以加载数据并使用它(从示例中复制数据):
>>> import json
>>> print json.loads('"2-\u043a\u043e\u043c\u043d., 16 \u044d\u0442\u0430\u0436 16-\u044d\u0442. \u0434\u043e\u043c"')
2-????., 16 ???? 16-??. ???
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |