栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

scrapy text encoding

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

scrapy text encoding

Scrapy以unipre而不是ascii返回字符串。要将所有字符串编码为utf-8,可以编写:

vriskoit['eponimia'] = [s.enpre('utf-8') for s in hxs.select('//a[@itemprop="name"]/text()').extract()]

但我认为你会期待另一个结果。你的代码返回包含所有搜索结果的一项。要为每个结果返回项目:

hxs = HtmlXPathSelector(response)for eponimia, address in zip(hxs.select("//a[@itemprop='name']/text()").extract(),       hxs.select("//div[@]/text()").extract()):    vriskoit = VriskoItem()    vriskoit['eponimia'] = eponimia.enpre('utf-8')    vriskoit['address'] = address.enpre('utf-8')    yield vriskoit

更新资料

JSON导出程序

u03a4
默认会编写转义的unipre符号(例如),因为并非所有流都可以处理unipre。它可以选择将它们编写为
unipre ensure_ascii=False
(请参阅docs.json.dumps)。但是我找不到将这个选项传递给标准Feed导出程序的方法。

因此,如果希望导出的项目以

utf-8
编码形式编写,例如在文本编辑器中读取它们,则可以编写自定义项目管道。

pipelines.py:import jsonimport precsclass JsonWithEncodingPipeline(object):    def __init__(self):        self.file = precs.open('scraped_data_utf8.json', 'w', encoding='utf-8')    def process_item(self, item, spider):        line = json.dumps(dict(item), ensure_ascii=False) + "n"        self.file.write(line)        return item    def spider_closed(self, spider):        self.file.close()

不要忘记将此管道添加到·:

 ITEM_PIPELINES = ['vrisko.pipelines.JsonWithEncodingPipeline']

你可以自定义管道,以更易读的格式写入数据,例如,可以生成某些格式的报告。·只是基本示例。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号