音乐软件爬虫报错keyerror:data

代码运行UI界面可以正常显示,输入信息后报错:

songs_data = self.response_data['data']['list']
                 ~~~~~~~~~~~~~~~~~~^^^^^^^^
KeyError: 'data'

部分源码如下:
if len(search_input) >0:
            search_url = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?'
            """key携带的值,是我们要搜索的值;pn,按照常量,我们猜测,其为页数;rn,我们猜测其为一页显示的数量"""
            search_data = {
                'key':search_input,
                'pn':'1',
                'rn': '80',
                'httpsStatus':'1',
                'reqId':'858597c1-b18e-11ec-83e4-9d53d2ff08ff'
            }
            try:# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
                self.response_data = requests.get(search_url,params=search_data,headers=headers,
                                                  timeout=20).json()
             songs_data = self.response_data['data']['list']
                if int(self.response_data['data']['total'])<=0:
                    mes_box.showerror(title='错误',message='搜索:{} 不存在.'.format(search_input))
                else:
                    for i in range(len(songs_data)):
                        self.show_result.insert('',i,values=(i+1,songs_data[i]['artist'],
                                                             songs_data[i]['name'],
                                                             songs_data[i]['album']))

这说明查询返回的数据结构变了。重新确认一下返回的内容。

这报错是说self.response_data里面没有'data'这个key
你打印一下 self.response_data 看看是不是根本就没获取到数据,或者数据结果不是你想的这样。然后再重新解析就好了

【以下回答由 GPT 生成】

报错提示的是KeyError: 'data',意味着在self.response_data这个字典中没有一个键名为'data'的键。可能是请求的接口返回的数据结构或者键名发生了变化导致的错误。要解决这个问题,可以按照以下步骤进行排查和修复:

  1. 检查接口返回的数据结构是否发生变化:可以在代码中添加打印语句,输出self.response_data的值,查看具体的返回数据结构。例如,在请求数据后的代码中添加一行print(self.response_data)

  2. 查看打印输出的返回数据结构,确定数据结构中是否存在键名为'data'的键。如果打印输出的数据结构没有'data'键,那么代码中就不能直接访问self.response_data['data']

  3. 如果数据结构变化了,需要针对新的数据结构进行相应地修改代码。根据打印输出的数据结构,查找到正确的键名来获取所需要的数据。

根据当前提供的代码和问题描述,需要进一步输出self.response_data的值来确定具体问题所在。请将打印输出的结果提供出来,以便进一步分析和提供准确的解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^