python闊充箰鎶栭煶 (绁炴洸python鎶栭煶)

目标网站:https://www.ximalaya.com/yinyue/20248318/

分析每一页网页url有什么不同:

第一页url:‘https://www.ximalaya.com/revision/play/albumalbumId=20248318&pageNum=1&sort=1&pageSize=30’

第二页url’https://www.ximalaya.com/revision/play/albumalbumId=20248318&pageNum=2&sort=1&pageSize=30’

第三页url:‘https://www.ximalaya.com/revision/play/albumalbumId=20248318&pageNum=3&sort=1&pageSize=30’

一共有十六页,可以使用Python当中的.format方法来占位(方法不唯一)

绁炴洸python鎶栭煶,python闊充箰鎶栭煶

代码如下:

1 for i in range(1, 17): # 通过循环及.format函数来获取到每页网页url的链接
2 url = ’https://www.ximalaya.com/revision/play/album?albumId=20248318&pageNum={}&sort=1&pageSize=30’.format(i)
3 # 该网站有反爬手段,我们可以通过伪装来和时间戳进行伪装
4 headers = {
5 ’User-Agent’: ’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36’,
6 ’xm-sign’: ’140acf6ece604f0c2034f1cf0f34a191(35)1571115325926(15)1571115327596’
7 # 时间戳(时间戳不唯一,会根据时间变化而改变)
8 }
9 response = requests.get(url, headers=headers) #get请求的时候要加入伪装
10 html = response.text
11 result = json.loads(html) #由于网站的数据是一个json类型的字符串,使用要调用该方法
12 count_list = result[’data’][’tracksAudioPlay’]
13 for count in count_list:
14 src = count[’src’]
15 name = count[’trackName’]
16 with open(’MP3/%s.m4a’ % name, ’wb’) as f:
17 music = requests.get(src)
18 print(’正在*载下**{}...’.format(name), end=’’)
19 f.write(music.content)
20 f.close()
21 print(’\t*载下**完成’)

运行结果:

绁炴洸python鎶栭煶,python闊充箰鎶栭煶

绁炴洸python鎶栭煶,python闊充箰鎶栭煶

我是一名python开发工程师,整理了一套python的学习资料,如果你想提升自己,对编程感兴趣,关注我并在后台私信小编:“08”即可免费领取资料!希望对你能有所帮助!