python爬取千千音乐榜单_python 千千音乐爬取

我自己为了练习爬虫写了一个某千音乐的爬取项目,可以爬取一个歌手的所有歌

首先是通过chrome的network寻找url地址

在播放器页面播放时会访问一个有固定格式的URL,后面有一个标示性的xcode

Fj7HohK7fHMVQ1BCbc7iplH7zZq_

接下来就是寻找这个url地址的来源

通过寻找XCODE可以找到一个网站的API

用requests.get请求,它会返回对应歌曲的信息,就包括它的播放地址

Fu5NQrQEsG3nGrD4BcKRB3mO8uLB

找到API后,下一步就是去找歌曲ID

FmXKiP0SNIaZkm-um-m_MXjCd-pH

在翻页的时候,并不是访问一个新的URL地址,而是js加载的。

加载的信息来源于"http://music.taihe.com/data/user/getsongs?start=0&size=15&ting_uid=2517"

每次都会返回15首歌曲,当然这规律也就显而易见了!

UID是歌手的ID

其中要注意的是:返回的结果有一个errorcode用来判断是否翻页到尽头!通过正则来获取即可

class MusicSpider(scrapy.Spider):

name = 'music'

allowed_domains = ['music.taihe.com']

start_urls = ["http://music.taihe.com/data/user/getsongs?start=0&size=15&ting_uid=2517"]

i=0

def parse(self, response):

mp3_url = "http://play.taihe.com/data/music/songlink"

a=re.findall('''data-songid=\\\\\"(\d+)\\\\\"''',response.text,re.S)#需要二次转义、、、、、

a=list(set(a))

print(a,end=" ")

print()

my_data = {

'songIds': ",".join(a),

'hq': '0',

'type': 'm4a,mp3',

'rate': "",

'pt': '0',

'flag': '-1',

's2p': '-1',

'prerate': '-1',

'bwt': '-1',

'dur': '-1',

'bat': '-1',

'bp': '-1',

'pos': '-1',

'auto': '-1'

}

response2 = requests.post(url=mp3_url, headers=my_headers, data=my_data)

music_infos = response2.json()['data']['songList']

for music_info in music_infos:

a=HomeworkItem()

a["songLink"] = music_info["songLink"]

a["songName"]= music_info["songName"]

yield a

self.i+=15

url = "http://music.taihe.com/data/user/getsongs?start=" + str(self.i) + "&size=15&ting_uid=2517"

res=requests.get(url=url, headers=my_headers)

errorCode=re.findall('''"errorCode":(\d+),"''',response.text,re.S)

if errorCode[0]!="22001":

yield scrapy.Request(

"http://music.taihe.com/data/user/getsongs?start=" + str(self.i) + "&size=15&ting_uid=2517",

callback=self.parse

)

保存就放在pipelines.py中完成!

现在这个代码还很短,是个一个刚入门练手的项目。现在不同播放器拥有的歌曲版权不同,未来我会补充其他音乐网站的爬虫,期望输入一个歌手名就可以全网下载他的歌曲。

程序使用:

FgnTzQwEzzaHbpzt-DU0ENaDekkP

在歌手的个人主页上,找到对应歌手的ID,填写在start_urld中的uid=后面。

FiWuZSmUfgt8b-DHGzoAtdAaqs56

然后在工程目录下,使用cmd命令 scrapy crawl music

网易云爬虫参考了ymbcxb的文章 代码结构还需修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值