网站优化关键词公司,网站开发人员工具下载视频,wordpress 添加备案号,公司建站比较好的1.检索爬取内容案例。 2.找到最近更新的。(最新一般都可以直接运行) 3.选择适合自己的项目#xff0c;目前测试下面画红圈的是可行的。 4.方便大家查看就把代码粘贴出来了。
#图中画圈一代码
import requests
import os
import rewhile True:music_id input(请输入歌曲…1.检索爬取内容案例。 2.找到最近更新的。(最新一般都可以直接运行) 3.选择适合自己的项目目前测试下面画红圈的是可行的。 4.方便大家查看就把代码粘贴出来了。
#图中画圈一代码
import requests
import os
import rewhile True:music_id input(请输入歌曲id或歌曲链接: )if music_id.startswith(http):music_id re.search(rid(\d), music_id).group(1)get_lyric requests.get(urlhttps://music.163.com/api/song/lyric, params{id: music_id, lv: 1, kv: 1, tv: -1}).json()print(get_lyric)if get_lyric.get(lrc).get(lyric) :print(该歌曲没有歌词)else:if not os.path.exists(./OutLyric):os.makedirs(./OutLyric)with open(f./OutLyric/{music_id}.lrc, w, encodingutf-8) as save_lyric:if get_lyric.get(tlyric).get(lyric) :save_lyric.write(get_lyric.get(lrc).get(lyric))else:zh_cn_lyric re.sub(r\[[^0-9]*:[^0-9.]*]\n, , get_lyric.get(tlyric).get(lyric))save_lyric.write(f{get_lyric.get(lrc).get(lyric)}\n{zh_cn_lyric})print(f下载成功,可将该文件重命名至与歌曲相同的名字使用,lrc文件保存至./OutLyric/{music_id}.lrc)
#图中画圈2代码
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests as rq
from requests import exceptions
from bs4 import BeautifulSoup as BS
import os
import re
import csvSONG_NUM 0def getMusic(ID, path, num):cloud http://music.163.com/song/media/outer/url?idkv {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36}try:url cloudID.mp3tmp rq.get(url, headerskv)tmp.raise_for_status()print(num、歌曲正在下载...)with open(path, wb) as f:f.write(tmp.content)f.close()print(num、歌曲下载成功)except exceptions.HTTPError as e:print(e)except Exception as e:print(e)def getMusicText(ID, path, num):muTextUrl http://music.163.com/api/song/lyric?id ID lv1kv1tv-1headers {Referer: https://music.163.com,Host: music.163.com,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36,Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.9}try:res rq.get(muTextUrl, headersheaders)res.raise_for_status()false False # 解决eval报错 name false is not definedtrue Truenull Nonelrc_dict eval(res.text) # 转换为dict字典lrc_dict lrc_dict[lrc]music_lyric lrc_dict[lyric]print(num、歌词正在下载...)with open(path, w, encodingutf-8) as f:f.write(music_lyric)f.close()print(num、歌词下载成功)except exceptions.HTTPError as e:print(e)except Exception as e:print(e)def create_csv_head():headers [song_num, song_name, singer, song_duration]with open(./music/musicMsg.csv, a, newline, encodingutf-8) as f:writer csv.DictWriter(f, fieldnamesheaders)head {song_num: 榜单序号, song_name: 歌曲名称,singer: 歌手, song_duration: 歌曲时长}writer.writerow(head)def save_musicMsg(music_dict):headers [song_num, song_name, singer, song_duration]with open(./music/musicMsg.csv, a, newline, encodingutf-8) as f:writer csv.DictWriter(f, fieldnamesheaders)writer.writerow(music_dict)def split_Msg(msg):msg msg.split()item msg[1]return itemdef getMusicMsg(ID):global SONG_NUMsong_url https://music.163.com/song?id IDheaders {Referer: https://music.163.com,Host: music.163.com,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36,Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.9}try:s rq.session()res s.get(song_url, headersheaders)soup BS(res.content, lxml)# 获取歌手singer str(soup.find(meta, {property: og:music:artist}))singer split_Msg(singer)# 获取歌曲名song_name str(soup.find(meta, {property: og:title}))song_name split_Msg(song_name)# 获取歌曲时长song_duration str(soup.find(meta, {property: music:duration}))song_duration split_Msg(song_duration)m, s divmod(int(song_duration), 60)song_duration (%02d:%02d % (m, s))music_dict {song_num: SONG_NUM,song_name: song_name,singer: singer,song_duration: song_duration}save_musicMsg(music_dict)# 歌曲名中/\\替换为空if / in song_name or \\ in song_name or : in song_name:song_name song_name.replace(/, )song_name song_name.replace(\\, )song_name song_name.replace(:, )# 歌手名中/\\替换为if / in singer or \\ in singer or : in singer:singer singer.replace(/, )singer singer.replace(\\, )singer singer.replace(:, )dirName singer-song_nameprint(dirName)return dirNameexcept exceptions.HTTPError as e:print(e)except Exception as e:print(e)def getMusicList():headers {Referer: https://music.163.com,Host: music.163.com,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36,Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.9}base_url https://music.163.com/discover/toplists rq.session()url base_urlresponse s.get(url, headersheaders)soup BS(response.content, lxml)main soup.find(ul, {class: f-hide})ls main.find_all(a)songID_dic {} # key song_name ,value songIDprint(一共有str(len(ls))首歌)a 1for music in ls:name music.textID str(music[href].replace(/song?id, ))name name_str(a)a 1songID_dic[name] IDprint(Name:{:30}\tID{:^10}.format(name, ID))print(一共有str(len(songID_dic)))return songID_dicdef main():global SONG_NUMsongID_dic getMusicList()rootDir musicif os.path.exists(rootDir):print(rootDir文件夹已存在)else:os.mkdir(rootDir)print(创建文件夹rootDir)create_csv_head()for item in songID_dic:item_clear item.split(_)[0]SONG_NUM 1dirName getMusicMsg(songID_dic[item])if dirName[-2:-1] .:dirName dirName.replace(., ·)musicDir ./rootDir/ dirNameif os.path.exists(musicDir):print(musicDir文件夹已存在)else:os.mkdir(musicDir)print(创建文件夹musicDir)if len(item_clear) 75:item_clear item_clear[:70]···elif . in item_clear:item_clear item_clear.replace(., ·)print(item_clear, end \n)mp3_path musicDir/item_clear.mp3m4a_path musicDir/item_clear.m4alyric_path musicDir/item_clear.txtnum str(SONG_NUM)print(*50)getMusic(songID_dic[item], mp3_path, num)getMusic(songID_dic[item], m4a_path, num)print(**50)getMusicText(songID_dic[item], lyric_path, num)print(*50)if __name__ __main__:main()# getMusicList()# getMusicText(1994955842, path)# getMusicMsg(1998931166)