分享一个python爬虫程序,抓取千千音乐热榜

本文是分享小程序,不是教程,若要真的自己实现,还需要去分析网页,而由于分析网页的过程比较复杂,这里不再赘述

该小程序涉及到requests库,beatifulsoup库,json库,以及文件储存,详细请参考代码

import requests  #导入requests库,用于发送get请求
from bs4 import BeautifulSoup #从bs4中导入BeautifulSoup库
import json #导入json
import re

url_main = 'http://music.taihe.com/top/dayhot' #千千音乐热歌榜地址
req = requests.get(url_main)
soup = BeautifulSoup( req.text, 'html.parser')#进行网站解析
span = soup.find_all( 'span', 'music-icon-hook')#获取网站span并且class为music-icon-hook的标签
song_id = [] #一个列表,用于存取音乐id
for s in span:
    data = s.get('data-musicicon')#获取每个标签的data-musicicon属性
    json_song = json.loads(data) #转换成字典
    song_id .append(json_song['id'])#获取音乐id

song_id = set(song_id)#将获取到的id去重复,即转化成集合

#遍历id
for song_id_one in song_id:
    url_json = 'http://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC&format=jsonp&callback=jQuery172039336038036257137_1558266486065&songid={}&from=web&_=1558266489478'
    #分析网页得到的音乐数据的json地址的公共部分,不同部分用{}代替
    js = requests.get (url_json.replace( '{}', song_id_one ))
     #分别取请求每个id的json

    jsonData = json.loads( js.text[42:-2] )#获取有效的json部分,并转化成字典形式
    song_fileName = '{}.mp3'.replace('{}', jsonData['songinfo']['title'])#获取歌名
    print('正在下载 {}'.replace( '{}', song_fileName))#提示信息
    song_url = jsonData['bitrate']['file_link']#获取每首音乐的url

    req_music = requests.get ( song_url )#请求url

   #将返回的音乐转换成二进制储存
    with open( song_fileName,'wb' ) as f:
        f.write ( req_music.content )

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值