代码整体思想:运行名字之后将会生成两个文档,一个文档是name.txt,用于放输入的名字;另一个文档是song.txt,用于存放搜索到的信息数据。1.首先判断name.txt文件是否存在,如果存在,则继续去读name.txt文档里的内容;若不在,则需先建立此文档,然后再去读文件。2.将每次输入的名字与name.txt文件里的内容做比较,倘若在文件里,则说明此歌名对应的数据已在song.txt文档里,就continue跳出此次循环;如果不在的话,则将数据存入song.txt文档里
首先,引入所需要的各种包
import requests
import json
import os
while True:
name = input("歌曲名称:")
先将输入的名字中的空格取出,然后判断是否为空。为空的话跳出while循环
if not name.strip():
break
如果不存在name.txt文件,则创建,先不写入任何内容
if not os.path.exists('name.txt'):
with open('name.txt', 'w', encoding='utf-8') as f:
f.write('')
执行到这一步,说明name.txt文件是一定存在的。读取此文档里的内容,返回一个列表
with open('name.txt', 'r', encoding='utf-8') as f:
name_list = f.readlines()
如果名字在上一步得到的列表里,就跳出此次循环
if name+"\n" in name_list:
print('已经搜索过')
continue
否则已追加的形式打开文件,将name写入name.txt文档里
else:
with open('name.txt', 'a', encoding='utf-8') as f:
f.write(name)
f.write('\n')
定义开始页数 每页显示几条数据 以及url 其中params用来传递参数,将其内容拼接到url之后
start_page = 0
num = 25
url = "http://search.kuwo.cn/r.s?ft=music&itemset=web_2013&client=kt&rformat=json&encoding=utf8"
response = requests.get(
url=url,
params={
"all": name,
"pn": start_page,
"rn": num
}
)
由于 JSON的key和value不能用单引号括起来,所以要用replace函数将单引号替换成双引号
result = response.text.replace("'", '"').replace(' ', '')
json_obj = json.loads(result)
song_list = json_obj['abslist']
for song in song_list
在此处说明,文件的调用有两种形式
形式一:
# print(song.get('SONGNAME', '没有歌曲名称'))
# f = open("song.txt", 'a', encoding='utf-8')
# f.write(song.get('SONGNAME', '没有歌曲名称'))
# f.write('\n')
# f.close()
形式二,这种方法不用写close函数
with open("song.txt", 'a', encoding='utf-8') as f:
f.write(song.get('SONGNAME', '没有歌曲名称'))
f.write('\n')