l2430478 发表于 2021-7-31 21:10

Python自学笔记(13)------python爬虫爬取网易云音乐

很久没有python了,看到大家都还在学习,我再发一贴,直接上代码!
# -*- codeing = utf-8 -*-
# @Time : 2021/2/20 16:12
# @AuThor : 老七疯狂吸氧
# @file kowyy.py
# @Software:PyCharm
import re
import requests
import os
import time
headers = {
    'User-Agent': 'Chrome/10'
}
def main():
    print('例如:罗大佑的网址是:https://music.163.com/#/artist?id=3686','\n','ID就是:3686')
    ID=input("请输入歌手ID:")
    url='https://music.163.com/artist?id='+ID
    html=requests.get(url,headers).text
    get_id(html)

def get_id(html):
    findlink=re.compile(r'<a href="/song\?id=(\d*)">(.*?)</a></li><li>')
    findname=re.compile(r'<h2 id="artist-name" data-rid=\d* class="sname f-thide sname-max" title=".*?">(.*?)</h2>')
    singername=re.findall(findname,html)
    creat(singername)
    ll=re.findall(findlink,html)
    for i in ll:
      savemusic(i,i)
      time.sleep(0.5)
def creat(singername):          #创建文件夹
    if not os.path.exists(singername):
      os.mkdir(singername)# 如果该目录不存在就创建它
    os.chdir(singername)
def savemusic(name,id):   #保存文件
    url='http://music.163.com/song/media/outer/url?id='+id+'.mp3'
    with open(name+'.m4a','wb') as f:
      print('歌曲《',name,'》 下载中***************')
      f.write(requests.get(url=url,headers=headers).content)
      f.close()
      print("《",name,"》下载完成")
      print('')
if __name__ == '__main__':
    main()

QingYi. 发表于 2021-7-31 21:16

28行的 time.sleep(0.5) 具体作用是什么?

Fiora 发表于 2021-7-31 21:18

涨知识了,谢谢。

xiaoqu525 发表于 2021-7-31 21:34

大佬牛皮。。涨知识了

LFM 发表于 2021-7-31 21:36

QingYi. 发表于 2021-7-31 21:16
28行的 time.sleep(0.5) 具体作用是什么?

间隔0.5秒

klmatao 发表于 2021-7-31 21:38

QingYi. 发表于 2021-7-31 21:16
28行的 time.sleep(0.5) 具体作用是什么?

计算机访问链接的速度很快,一秒钟可以访问几千上万的链接。这句的作用就是放慢访问的速度,避免由于访问次数过多造成服务器压力和被封IP地址

那年夏天52 发表于 2021-7-31 21:47

感谢分享

playkongfu 发表于 2021-7-31 21:48

感谢分享

tomato123123 发表于 2021-7-31 21:51

666,厉害

Horizon8945 发表于 2021-7-31 21:54

搬砖啦!
页: [1] 2 3 4 5 6 7 8
查看完整版本: Python自学笔记(13)------python爬虫爬取网易云音乐