我正在将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
答案 0 :(得分:0)
看起来items
是一个字典,它的长度与它们包含的(键,值)对的数量相对应。但是,这些项是由它们的键引用的,这些项是任意的,不一定是从0
开始的顺序数字索引,就像list
一样。
将handle()
方法中的循环更改为:
...
items = utils3.processor(g1)
for key, value items.items():
utils3.saver(value)
...
答案 1 :(得分:0)
processor
会返回字典,而不是列表:它包含title
,link
等密钥。
根本没有理由让它循环。只需将items
直接传递回saver
。
请注意,如果您确实需要进行迭代,那么无论如何都不应该使用range(len(whatever))
。对于字典,您应该直接遍历项目:
for key, value in items:
... do something with key and value...