使用Scrapy爬取数据并保存为json、csv文件及乱码解决 | 您所在的位置:网站首页 › 为什么保存的文档是乱码 › 使用Scrapy爬取数据并保存为json、csv文件及乱码解决 |
创建scrapyporject
没安装好scrapy的可以看这里 docs.scrapy.org scrapy startporject tutorial 执行成功后在目录下生产tutorial文件夹,结构目录如下:chinaz 使用xpath的时候,获取tag的xpath可以使用浏览器的开发者工具F12 ,右键选择 存入json文件或csv文件 pipelines.py import json, codecs, os, csv # 保存为json文件 class JsonPipeline(object): def __init__(self): #文件的位置 store_file = os.path.dirname(__file__) + '/spiders/wangzhan.json' # 打开文件,设置编码为utf-8 self.file = codecs.open(filename= store_file, mode= 'wb', 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 close_spider(self, spider): self.file.close() # 保存为csv文件 class Pipiline_ToCSV(object): def __init__(self): #文件的位置 store_file = os.path.dirname(__file__) + '/spiders/wangzhan.csv' #打开文件,并设置编码 self.file = codecs.open(filename= store_file, mode= 'wb', encoding='utf-8') # 写入csv self.writer = csv.writer(self.file) def process_item(self, item, spider): line = (item['name'], item['order'], item['url'], item['score']) # 逐行写入 self.writer.writerow(line) return item def close_spider(self, spider): self.file.close() 配置settings.py 使用pipeline对items里面获取的信息进行处理 settings.py # 存储为csv 设置Pipiline_ToCSV #ITEM_PIPELINES = { # 'tutorial.pipelines.Pipiline_ToCSV' : 300, #} # 存储为json 设置JsonPipeline ITEM_PIPELINES = { 'tutorial.pipelines.JsonPipeline' : 300, } FEED_EXPORT_ENCODING='UTF-8' #设置存储编码为utf-8,存json中文就不会乱码,不加就乱码 执行spider scrapy crawl wangzhan 执行成功之后,就会在spider目录下生成wangzhan.json或wangzhan.csv
![]() ![]() 右击文件,选择记事本打开,选择文件>另存为>文件名不变,编码选择ANSI>点击保存,选择替换,重新打开wangzhan.csv 就是中文了 以上就是使用scrapy爬取chinaz的网站排名,不是很难,主要是找准css或者xpth取到数据,希望对大家有所帮助,之前也遇到很多错误,找了些资料然后修正了过来,还有不对的地方请多多指正! |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |