python爬取qq音乐歌词风变编程_爬取QQ音乐歌词

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

# @DESC: 爬取歌手前3页歌曲的歌词都爬取下来,并按歌名分别保存

# @Date: 2020-05-21

import requests

import re,os

os.makedirs('music',exist_ok=True)

## 添加请求头

headers = {

'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36',

'origin':'https://y.qq.com',

'referer':'https://y.qq.com/portal/search.html'

}

url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'

singer = input('请输入歌手的名称:--> ')

## 爬取前3页的歌曲信息

for p in range(3):

kw = {

'ct': '24',

'qqmusic_ver': '1298',

'new_json': '1',

'remoteplace': 'txt.yqq.song',

'searchid': '58441748906438518',

't': '0',

'aggr': '1',

'cr': '1',

'catZhida': '1',

'lossless': '0',

'flag_qc': '0',

'p': p,

'n': '10',

'w': singer,

'g_tk_new_20200303': '1324537534',

'g_tk': '1324537534',

'format': 'json',

'inCharset': 'utf8',

'outCharset': 'utf-8',

'notice': '0',

'platform': 'yqq.json',

'needNewCode': '0'

}

response = requests.get(url,headers=headers,params=kw)

if response.status_code == 200:

res = response.json()

songs_lst = res['data']['song']['list']

for song in songs_lst:

song_info = ''

song_name = song['name'] ## 歌名

album_name = song['album']['name'] ## 专辑

interval = song['interval'] ## 播放时长

mid = song['mid'] # 歌曲ID

musicid = song['id']

sing_song_url = f'https://y.qq.com/n/yqq/song/{mid}.html'

song_info = f'歌名:{song_name}\n时长:{interval}\n专辑:{album_name}\n歌曲链接:{sing_song_url}\n***\n'

print(song_info)

h = {

'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36',

'origin': 'https://y.qq.com',

'referer': sing_song_url,

}

url1 = 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_yqq.fcg'

params = {

'nobase64':'1',

'musicid': musicid,

'-':'jsonp1',

'g_tk_new_20200303':'',

'g_tk':'1324537534',

'loginUin':'',

'hostUin':'0',

'format':'json',

'inCharset':'utf8',

'outCharset':'utf-8',

'notice':'0',

'platform':'yqq.json',

'needNewCode':'0'

}

res = requests.get(url1,headers=h,params=params)

if res.status_code == 200:

print(res.url)

wordRegex = re.compile(r'[\u4e00-\u9fa5:]+') ## 匹配中文和中文环境下的冒号(:)

ch_words = wordRegex.findall(res.text)

print(ch_words)

## 找到第一个有冒号的串(词:XX)

for i in range(1, int(len(ch_words) / 2)):

if ch_words[i].find(':') > 0:

first = i

# print(f'前半截:{first}')

break

flag = first

## 找到最后一个有冒号的串(编曲:XX)

for i in range(first, int(len(ch_words) / 2)):

if ch_words[i].find(':') < 0 and ch_words[i + 1].find(':') < 0 and ch_words[i + 2].find(':') < 0:

flag = i

# print(f'后半截:{flag}')

break

strquqita = ''

## 过滤到歌词前的所有字符

for i in ch_words[flag:]:

if i.find(':')<0:

strquqita = strquqita+i+"\n"

with open(os.path.join('music',f'{song_name}.txt'),'w') as f:

f.write(strquqita)

# print('\n ****** \n')

else:

print(f'获取歌词页面失败,响应码:{res.status_code}')

else:

print(f'服务器连接失败,响应码:{response.status_code}')

print('完成')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php post请求后端拿不到值_Ajax 提交POST后,后台php 无法获取$POST值

当 contentType 为 application/x-www-form-urlencoded 时(默认值)才能用 $_POST 得到传入的数据。但是使用 application/json;charsetutf-8不是 php 所能识别的类型声明&#xff0c;不能替你解析。所以只能用 php://input 取得&#xff0c;并用 parse_str 自行解析而形如 a1&a…

springbean的生命周期_spring bean生命周期(涵盖spring常用接口的载入)

spring bean生命周期流程图&#xff1a;​​​​其中包含了很多常用的接口&#xff0c;可以参考spring 常用接口&#xff1b;下面写个例子证明下&#xff1a;1.实现InitializingBean以及各个Aware接口public class UserB implements InitializingBean , BeanFactoryAware , Bea…

python中的索引从几开始计数_计算机为什么要从 0 开始计数?

作者&#xff1a;程序喵大人来源&#xff1a;程序喵大人大家好&#xff0c;我是猫哥&#xff01;众所周知&#xff0c;计算机是从0开始计数&#xff0c;而不是我们平时常用的从1开始计数&#xff0c;但你有想过为什么吗&#xff1f;其实不是计算机从0开始计数而是多数编程语言中…

python os.environ windows_python 获取系统环境变量 os.environ and os.putenv

从一段code说起 “if "BATCH_CONFIG_INI" in os.environ:” 判断环境变量的值有没有定义如果定义的话就去环境变量的值&#xff0c;否则就取当前目录下的config.ini文件。if "BATCH_CONFIG_INI" in os.environ:print "Using custom ini file!"se…

coreos 安装mysql_如何执行CoreOS Linux的裸机安装

本文将介绍如何在裸机服务器上加载CoreOs Linux。关于在计算机上安装CoreOS Linux的更多方法。在本文中&#xff0c;我们将首先启动一些Live Linux发行版。从USB或CDROM提取Fedora&#xff0c;然后使用CoreOS的安装脚本在给定的硬盘驱动器上执行实际的CoreOS Linux。您将需要什…

python selenium截图_python+selenium截图操作样例

# -*- coding:utf-8 -*-# explain : 截图操作import os, timeclass Picture:"""截图操作分为正常的操作截图truepicture和异常的操作截图errorpicture"""def __init__(self, driver, path):""":type driver: selenium.webdriver.…

java环形队列测试,JAVA数据结构之循环队列的实现

1、循环队列CircleQueue类的实现代码如下所示&#xff1a;public class CircleQueue {private Object[] array;private int capacity;//队列容量private int count;//队列中元素的个数private int front;private int rear;public CircleQueue(int capacity){this.capacity cap…

websocket 发送图片_基于WebSocket的web端IM即时通讯应用的开发

基于WebSocket的web端IM即时通讯应用的开发功能列表&#xff1a;1、Web端的IM即时通讯应用2、支持上线、下线、实时在线提醒3、单聊、群聊的建立4、普通文字、表情、图片的传输(子定义富文本)5、单人的顶级提醒&#xff0c;多对话的窗口的提醒6、调用图灵机器人的自动回复演示目…

php处理结果集,php中mysqli 处理查询结果集的几个方法

最近对php查询mysql处理结果集的几个方法不太明白的地方查阅了资料&#xff0c;在此整理记下Php使用mysqli_result类处理结果集有以下几种方法fetch_all()抓取所有的结果行并且以关联数据&#xff0c;数值索引数组&#xff0c;或者两者皆有的方式返回结果集。fetch_array()以一…

python gamma函数_python gamma矫正

这个函数&#xff0c;主要用来做对比度调整&#xff0c;利用 gamma 曲线 或者 log 函数曲线&#xff0c;gamma 函数的表达式&#xff1a; yxγ, 其中&#xff0c; x 是输入的像素值&#xff0c;取值范围为 [0−1], y 是输出的像素值&#xff0c;通过调整γ 值&#xff0c;改变…

ios 支付验证 php,PHP验证IOS原生支付是否成功(代码全篇)

前言IOS原生支付后,需要调用服务端接口进行验证,检测是否真正的支付成功!class ApplePay{/** 环境配置(建议提成配置)* var bool*/private $sandbox false ;/** result as json* param int $code* param string $msg* param array $data* return string*/private function jso…

python自动化输入不了中文_appium+python自动化61-中文输入乱码问题解决

前言在夜神模拟器上输入中文&#xff0c;发现是乱码&#xff0c;将unicodeKeyboard和resetKeyboard参数设置为True了&#xff0c;发现还是没法解决。 打开手机设置语言和输入法&#xff0c;发现找不到Appium Android Input Manager for Unicode输入法导致的 相关环境:appium1.8…

PHP定时抽奖怎么实现的,PHP 实现抽奖逻辑

public static function get_rand($proArr) {$result "";//概率数组的总概率精度$proSum array_sum($proArr);//概率数组循环foreach ($proArr as $key > $proCur) {$randNum mt_rand(1, $proSum);if ($randNum < $proCur) {$result $key;break;} else {$p…

绿盟漏洞扫描_主机安全漏洞解决方案

前几天发了一篇等保2.0的文章(等保2.0简单介绍 )&#xff0c;文章里面提到&#xff0c;相比于等保1.0标准&#xff0c;等保2.0很大幅度上对安全通用要求的一些控制项做了大幅精简&#xff0c;但是等保二级的要求仍多达135项、等保三级多达211项。https://mp.weixin.qq.com/s/kE…

php电子商务模板,关于php:电商系统设计之运费模板下

电商大伙每天都在用&#xff0c;相似某猫&#xff0c;某狗等。电商零碎设计看似简单又很简略&#xff0c;看似简略又很简单本章适宜初中级工程师细看&#xff0c;大佬请随便【腾讯云】云产品限时秒杀&#xff0c;爆款1核2G云服务器&#xff0c;首年99元前言在订单零碎中&#x…

采用光线跟踪绘制场景 c++_光线追踪的相干性聚集:硬件光线追踪的优势

尽管在理论上实现现代GPU的方法是无限的&#xff0c;但真正有效的方法是切实地了解问题并着手将方案变为现实。制造现代高性能半导体器件以及试图加速当前可编程光栅化技术所面临的问题揭示了GPU硬件行业发展的未来趋势。例如在现代GPU中SIMD处理和固定功能纹理单元是必不可少的…

ajax请求php省略后缀,如何在PHP中更安全地处理Ajax请求?

在谷歌搜索了很多次后,回答结束了!步骤1:为所有Web服务生成令牌系统:生成令牌:session_start();$token md5(rand(1000,9999)); //you can use any encryption$_SESSION[token] $token; //store it as session variable?>步骤2:发送Ajax调用时使用它:var form_data {data…

python编写字符串查找函数_Python 简明教程 --- 8,Python 字符串函数

好代码本身就是最好的文档。当你需要添加一个注释时&#xff0c;你应该考虑如何修改代码才能不需要注释。—— Steve McConnell目录字符串有很多操作函数&#xff0c;所以&#xff0c;这里我们专门用一节来介绍这些函数。建议&#xff1a;由于字符串函数较多&#xff0c;对于新…

php汽车之家数据api,基于聚合数据的全国违章直连查询接口示例-PHP版

前言从聚合数据官网的接口文档中我们可以看出全国违章直连查询的调用一般来说需要两个步骤获取支持城市参数接口&#xff0c;即获取到不同城市的需要的参数的长度规则请求违章查询接口&#xff0c;即获取到车辆的违章记录我们以无锡城市为例代码部分<?php // 请求的接口URL…

xxljob 配置具体定时任务_分布式任务调度: XXL-Job

1 任务调度中心搭建、部署、任务管理与监控[1]任务调度中心页面2 SpringBoot 集成 xxl-job&#xff1a;创建调度任务maven项目pom.xml引入依赖:<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>…