今天爬取网易云音乐热歌榜单

一共200首

公众号回复 网易云榜单获取源代码

爬取--网易云热歌榜单--200首_公众号


打开 网页版 网易云

爬取--网易云热歌榜单--200首_正则表达式_02


打开开发者模式

全局搜索 赵雷,看看这些信息藏在哪个文件中

爬取--网易云热歌榜单--200首_公众号_03


发现在这个文件中,歌手和歌曲都有

然后点击标头

查看请求url

爬取--网易云热歌榜单--200首_公众号_04

请求url:

https://music.163.com/discover/toplist?id=3778678

然后下面开始写代码

先访问

url = "https://music.163.com/discover/toplist?id=3778678"
ua = fake_useragent.UserAgent()
header = {
    'user-agent':ua.random
          }
response = requests.get(url=url,headers=header)
r = response.text

获取源代码后

我们用re正则表达式来提取信息

歌名和歌曲后半部分地址都在li标签里

爬取--网易云热歌榜单--200首_公众号_05

所以先把这一大段获取下来

用re正则表达式

# 包含歌曲和歌曲链接的一段字符串
all = ''.join(re.findall('<ul class="f-hide">(.*?)</ul>',r))


然后再从 all 里面用re把歌名和歌曲后半部分url提取下来

爬取--网易云热歌榜单--200首_网易云_06

# 从 all 里提取歌名
name = re.findall('<a href=".*?">(.*?)</a>',all)
# 从 all 里提取歌曲地址
song_url = re.findall('<a href="(.*?)">.*?</a>',all)

然后开始找歌手的信息

爬取--网易云热歌榜单--200首_网易云_07

爬取--网易云热歌榜单--200首_正则表达式_08

发现歌手的信息在这里

所以直接从页面源码中用re来提取出来

# 从页面全部源代码中提取歌手的信息
singer = re.findall('"artists":\[{"id":.*?,"name":"(.*?)",',r)


提取部分:

爬取--网易云热歌榜单--200首_正则表达式_09

然后全部都打印出来

这里用for循环来获取下表进行打印

爬取--网易云热歌榜单--200首_正则表达式_10

看效果

爬取--网易云热歌榜单--200首_公众号


公众号回复 网易云榜单 获取源代码

代码仅供学习参考

感谢观看!