为了账号安全,请及时绑定邮箱和手机立即绑定

Scrapy json 输出文件添加了不必要的方括号

Scrapy json 输出文件添加了不必要的方括号

一只萌萌小番薯 2021-06-17 09:13:14
Scrapy 正在输出有缺陷的 json 文件。当我尝试使用上述 json 文件时,import json我遇到了这个错误json.decoder.JSONDecodeError: Expecting ',' delimiter: line 311 column 94 (char 28466) 这是因为在 json 文件的前面添加了一个不必要的方括号。JSON 文件将如下所示[[{"city": "New York", "state": "New York", "rank": "1\n", "population": ["8,622,698\n"]},{"city": "Los Angeles", "state": "California", "rank": "2\n", "population": ["3,999,759\n"]}]` 我正在使用此命令进行爬网:scrapy crawl wiki -o items.json当我手动删除方括号时,它运行正常。这是另一个python脚本:import jsonwith open ("items1.json", "r") as read_file:data = json.load(read_file)print(type(data))编辑有问题的蜘蛛# -*- coding: utf-8 -*-`import scrapyclass WikiSpider(scrapy.Spider):        name = "wiki"        allowed_domains = ["en.wikipedia.org"]    start_urls = ('https://en.wikipedia.org/wiki/List_of_United_States_cities_by_population')    def parse(self, response):        table = response.xpath('//table')[4]        trs = table.xpath('.//tr')[1:]        for tr in trs:            rank = tr.xpath('.//td[1]/text()').extract_first()            city = tr.xpath('.//td[2]//text()').extract_first()            state = tr.xpath('.//td[3]//text()').extract()[1]            population = tr.xpath('.//td[4]//text()').extract()            yield {                'rank':rank,                'city': city,                'state': state,                'population':population            }
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

[您的 JSON 中肯定有不需要的内容,但我确实运行了您的代码并且它按预期工作。你确定你没有混淆items1.jsonitems.json?您的问题中都提到了两者。

除此之外,我注意到维基百科 URL 是错误的,但我认为这只是一个错字。


查看完整回答
反对 回复 2021-06-22
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信