' KeyError:0'访问商品

时间:2016-06-21 17:48:23

标签: python json xml dictionary

我正在将XML数据转换为JSON,然后将其存储在数据库中。 我收到一个关键错误0.第12行出错。相关的代码文件是 -

from django.core.management.base import BaseCommand, CommandError
import boxer.utils3 as utils3


class Command(BaseCommand):
    help = "it saves news."

    def handle(self,*args,**options):
      g1 = utils3.wegGetter("https://www.naukrinama.com/feed/")
      items = utils3.processor(g1)
      for i in range(0,len(items)):
         item = items[i] ##line12
         utils3.saver(item)
      return

第二个文件是 -

import requests
import xmltodict
from . import models

def wegGetter(url):
   f1 = requests.get(url)
   g1 = xmltodict.parse(f1.content)
   return g1

def processor(content):
   items = content['rss']['channel']
   return items

def saver(item):
   title = item['title']
   category=item['category']
   description=item['description']
   image_url=item['post-thumbnail']
   url=item['link']
   _content = models.Content(cid="2",title=title,category=category,image_url=image_url,description=description,url=url)
   _content.save()
   return

2 个答案:

答案 0 :(得分:0)

看起来items是一个字典,它的长度与它们包含的(键,值)对的数量相对应。但是,这些项是由它们的键引用的,这些项是任意的,不一定是从0开始的顺序数字索引,就像list一样。

handle()方法中的循环更改为:

      ...
      items = utils3.processor(g1)
      for key, value items.items():
          utils3.saver(value)
      ...

答案 1 :(得分:0)

processor会返回字典,而不是列表:它包含titlelink等密钥。

根本没有理由让它循环。只需将items直接传递回saver

请注意,如果您确实需要进行迭代,那么无论如何都不应该使用range(len(whatever))。对于字典,您应该直接遍历项目:

for key, value in items:
   ... do something with key and value...