Python爬虫-爬取音乐资源

Posted 我只想做一个平静的上班族

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫-爬取音乐资源相关的知识,希望对你有一定的参考价值。

爬取音乐资源

实现

#python 的正则库
import re 
#python 的requests库
import requests
import time

#找到url的规律
#每一页的url
# http://www.htqyy.com/top/hot
# http://www.htqyy.com/top/musicList/hot?pageIndex=1&pageSize=20
# http://www.htqyy.com/top/musicList/hot?pageIndex=2&pageSize=20

#歌曲连接
# http://www.htqyy.com/play/33
# 33-每个歌曲的号码,页url可以找到
#资源所在url
# http://f2.htqyy.com/play8/33/mp3/6

#class="num">41</span><span class="title"><a href="/play/46" target="play" title="琵琶语" sid="46">琵琶语</a></span>

songName=[]
songID=[]

headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
}

page=2
#page=int(input("请输入您要爬取的页数:"))

for i in range(0,page):
    url="http://www.htqyy.com/top/musicList/hot?pageIndex="+str(i)+"&pageSize=20"

    #发送get请求,获取音乐榜单网页信息
    r=requests.get(url,headers=headers)
    #GBK网页采用的编码格式
    r.encoding=GBK
    html_text=r.text
    print(html_text)
    #正则找到对应歌的url
    part1=rtitle="(.*?)" sid=
    part2=rsid="(.*?)"

    #将匹配的字串组成列表形式返回
    titlelist=re.findall(part1,html_text)
    idlist=re.findall(part2,html_text)

    #在一个列表尾添加另一个列表
    songName.extend(titlelist)
    songID.extend(idlist)

for i in range(0,len(songID)):
    songurl="http://f2.htqyy.com/play8/"+str(songID[i])+"/mp3/6"
    songname=songName[i]

    #二进制文件
    data=requests.get(songurl).content
    
    print("正在下载...")
    with open("E:\music\{0}.mp3".format(songname),"wb") as f:
        f.write(data)
    
    time.sleep(5)

 

当无法访问试试下面代码

headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
}

songurl="http://f2.htqyy.com/play8/33/mp3/6"
songname="清风"

#二进制文件
data=requests.get(songurl,headers=headers).content

print("正在下载...")
with open("D:\Python\{0}.mp3".format(songname),"wb") as f:
    f.write(data)

总结

  当得到的网页信息是乱码:

  print requests.get(url).encoding  打印获取到的网页信息采用什么编码

  r = requests.get(url)

  r.encoding = ‘GBK‘

  print(r.text)           将编码格式采用‘GBK‘,网页编码,就不会出现乱码

  字符串拼接:

  +或者format()

 

以上是关于Python爬虫-爬取音乐资源的主要内容,如果未能解决你的问题,请参考以下文章

Python多线程爬虫爬取电影天堂资源

如何用Python网络爬虫爬取网易云音乐歌曲

Python爬虫-爬取音乐资源

Python爬虫实践--爬取网易云音乐

python怎么批量爬取需要点击才出现的内容资源?

Python Scrapy的QQ音乐爬虫 音乐下载爬取歌曲信息歌词精彩评论