基于requests的歌曲查询

代码整体思想:运行名字之后将会生成两个文档,一个文档是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')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值