jin20201 2020-04-21 11:41 采纳率: 0%
浏览 3481

TypeError: list indices must be integers or slices, not str怎么修改

import requests
import json
import os
import urllib.parse
#j为歌曲标头
j=1
class KuGou:
#初始化
def init(self,word):
#创建目录
path="F:/酷狗歌曲下载/" #路径可以自己定义
if not os.path.exists(path):
os.mkdir(path)
self.path=path
self.word=word
word1= urllib.parse.quote(word)
#带参数访问网址
self.url="https://songsearch.kugou.com/song_search_v2?callback=jQuery112404383246257004936_1550576119140&keyword={}&page=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0&_=1550576119142".format(word1)

#发出requests请求
def requests_get(self):
    r=requests.get(self.url)
    r.encoding="utf-8"
    self.req = r.text

print(self.req)

#获取并且展示歌曲信息
def show_song(self):
    global j

songID_list={}

    songhash_list={}  #hash列表
    song_name={}    #歌曲名字
    # json文件信息  
    kg=json.loads(self.req.lstrip("jQuery112404383246257004936_1550576119140(").rstrip().rstrip(r')'))
    self.kg=kg
    for song in kg['data']['lists']:
        print("{0}————{1}".format(j,song['SongName']))
        song_name[str(j)]=song['SongName']
        songhash_list[str(j)]=song['FileHash']
        j+=1
    self.song_name=song_name
    self.songhash_list=songhash_list

self.songID_list=songID_list

print(songhash_list)

#下载歌曲
def download_song(self):
num=input("您想下载哪首歌(输数字):")
url="http://www.kugou.com/yy/index.php?r=play/getdata&hash={}".format(self.songhash_list[num])
hash_res=requests.get(url)
hash_js=hash_res.json()
play_url=hash_js['data']['play_url']

print(play_url)

    with open(self.path+self.song_name[num]+".mp3","wb") as f:
        f.write(requests.get(play_url).content)
    print("《{}》下载完成".format(self.song_name[num]))


#选择是否继续爬取
def exit(self):
    str1=input("继续下载(y),还是退出(n):")
    return str1

if name == "__main__":
print("欢迎来到python下载系统")
word=input("请输入歌手名:")
#word="杨宗纬"
pachong=KuGou(word)
pachong.requests_get()
pachong.show_song()
pachong.download_song()
str1=pachong.exit()
while str1!="n":
if str1 == "y":
pachong.download_song()
str1 = pachong.exit()
elif str1 == "n":
print("已退出")
else:
print("输入错误,请重新输入!")
str1 = pachong.exit()

                    Microsoft Windows [版本 6.1.7601]

版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe e:/自己文件/pyhonn/用C:\Users\Administrator>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe e:/自己文件/pyhonn/用
爬歌系统.py
欢迎来到python下载系统
请输入歌手名:于洋
1————隐忍的伤
2————不等于你的爱
3————望爱却步
4————望爱却步
5————错了懂了
6————锁心莲
7————向来缘浅奈何情深
8————该不该难过
9————望爱却步 (吉特巴版)
10————你欠我一个吻
11————东北话 (Live)
12————不问红尘有多远
13————相思扣
14————意外收场
15————爱上你我情深无悔
16————全世界都在说东北话
17————捐助
18————难舍难分的你
19————意外收场
20————一场爱恋一场泪
21————恨你太早说出口
22————魂牵梦绕
23————缘来如梦
24————一个人的孤单
25————心有不甘
26————相思醉
27————最美的花
28————你是我的情也是我的爱
29————你给的幸福又被你带走
30————还是不够爱
您想下载哪首歌(输数字):26
Traceback (most recent call last):
File "e:/自己文件/pyhonn/用Python写一个酷狗爬歌系统.py", line 70, in
pachong.download_song()
File "e:/自己文件/pyhonn/用Python写一个酷狗爬歌系统.py", line 51, in download_song
play_url=hash_js['data']['play_url']
TypeError: list indices must be integers or slices, not str

  • 写回答

2条回答 默认 最新

  • zqbnqsdsmd 2020-04-21 15:28
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器