问题描述
目前正在用scrapy去很多域名,想存在本地json文件方便以后读取,但是存进json的格式不太对,老是报错
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
主文件:
class ChinaZSpider(scrapy.Spider):
name = 'chinaz'
allowed_domains = 'top.chinaz.com'
def start_requests(self):
for i in range(2,3):
base_url = 'https://top.chinaz.com/gongsi/index_shizhi_{}.html'.format(i)
yield Request(url=base_url, callback=self.parse_1, dont_filter=True)
def parse_1(self, response):
suffix = response.xpath('//ul/li/div/h3/a/@href').extract()
for i in suffix:
url = 'https://top.chinaz.com{}'.format(i)
yield Request(url=url, callback=self.parse_2, dont_filter=True)
def parse_2(self, response):
item = ChinazItem()
item['domain'] = response.xpath('//div[6]//span/a/text()').extract()
yield item
pipeline文件:
import json
import codecs
class ChinazPipeline(object):
def __init__(self):
self.file = codecs.open('save.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
你期待的结果是什么?实际看到的错误信息又是什么?
目前保存到json里面是这样的:
{"domain": ["www.cebbank.com"]}
{"domain": ["www.xiaojukeji.com"]}
{"domain": ["www.yili.com"]}
{"domain": ["www.163.com"]}
希望的格式是{"domain": ["www.cebbank.com", "xiaojukeji.com", "www.yili.com"]}
相当于一个key对应一个列表里的value,或者直接把域名以列表的形式存到json里面,哪种都行,求助!