python scrapy怎么处理json api

用scrpay抓取一个段子api,不是太会处理。
api:http://neihanshequ.com/joke/?...
如下格式:
图片描述

我的代码

def parse_item(self,response):
    jdict=json.loads(response.body)
    jdata = jdict['data']['data']
    item = NhdzItem()
    list=[]
    for i in range(len(jdata)):
        list.append(jdata[i])
        for t in range(len(list)):
            item['text']=list[t]['group']['text']
            item['content']=list[t]['group']['content']
            item['username']=list[t]['group']['user']['name']
    yield item 
    

content,text,username
唉!星期五晚上她还要求开着房,现在就像陌生人一样了,年龄就是问题么?七岁很大么?3月3日交往到现在,已经打破我以前的恋爱经历了,我想好好珍惜都不行么?为什么女人都是在嫌弃奋斗着的男人?唉……现在的我只能多为自己着想!有钱,什么样的女人找不到?(段友们,我说得对还是错?),唉!星期五晚上她还要求开着房,现在就像陌生人一样了,年龄就是问题么?七岁很大么?3月3日交往到现在,已经打破我以前的恋爱经历了,我想好好珍惜都不行么?为什么女人都是在嫌弃奋斗着的男人?唉……现在的我只能多为自己着想!有钱,什么样的女人找不到?(段友们,我说得对还是错?),乌黑的段子

最后结果只能取到20个内容中的最后一条,但是item['text']如果print出来是有20条的。
求助!感谢!

阅读 2.5k
1 个回答
  1. yield item写到第二层for循环下面
  2. 你这样写就是每次循环把前面的item值覆盖了,应该是:创建一次yield一次
  3. 而且你上面的jdata本来就是一个list,没必要再创建一个列表来遍历保存吧?
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题