基于requests的歌曲查询
2018-02-27 19:18
232 查看
代码整体思想:运行名字之后将会生成两个文档,一个文档是name.txt,用于放输入的名字;另一个文档是song.txt,用于存放搜索到的信息数据。1.首先判断name.txt文件是否存在,如果存在,则继续去读name.txt文档里的内容;若不在,则需先建立此文档,然后再去读文件。2.将每次输入的名字与name.txt文件里的内容做比较,倘若在文件里,则说明此歌名对应的数据已在song.txt文档里,就continue跳出此次循环;如果不在的话,则将数据存入song.txt文档里
首先,引入所需要的各种包import requests
import json
import os
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之后
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')
首先,引入所需要的各种包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')
相关文章推荐
- 基于requests的歌曲查询--两种写入文件的方法
- Spring整合JDBC实现简单的增删改续-实现基于RowMaper的查询
- 基于时间的查询(AS OF TIMESTAMP)
- 使用Anemometer基于pt-query-digest将MySQL慢查询可视化
- LINQ to Entities 基于方法的查询语法
- 基于python的淘宝信息查询
- Cloudera Impala:基于Hadoop的实时查询开源项目
- 基于Spark1.6使用Spark SQL和sqlite数据库进行诗歌查询及自动集句
- 基于 double array 实现汉字的trie树索引 与 查询功能 python实现
- 23、SSM框架-Mybatis基于注解实现增删查改和多参数列表查询(5)
- 时时价: 基于垂直搜索引擎的价格对比和信息查询
- WebGIS中兴趣点简单查询、基于Lucene分词查询的设计和实现
- 基于Wolf32F031 自由评估板的KEY scan(查询方式)实验硬件原理及软件API使用方法(适用于STM32F030/031)
- iOS 基于FMDB简单的查询操作
- 基于Smack3.0.4+ Openfire3.10.2下学习开发IM(五)聊天室操作:创建聊天室、成员添加聊天室、查询聊天室成员和监听聊天室
- 利用C#查询视图字段基于基表的字段
- 基于MongoDB分布式存储进行MapReduce并行查询
- 基于mssql 百万级 数据 查询 优化 技巧三十则
- C#:基于WMI查询USB设备
- 基于倒排索引的关系数据库全文检索查询效率研究