admin管理员组

文章数量:1650889

一、 构造url:

1. 进入酷狗音乐官方网站,点击酷狗TOP500,查看浏览器地址栏


可以看到地址为https://www.kugou/yy/rank/home/1-8888.html?from=rank;其中各个部分代码的含义如下:

字段含义
https传输协议
www.kugou域名
yy/rank/home/abs域名下的子网页
.html代表网页是静态的
代表一种条件,后面接参数
1-88888888可能是端口,1代表当前页面数,TOP500一共有23页,从1-8888到23-8888

2. 知道了地址栏的含义,就可以构造url了,用以下代码构造

urls=['https://www.kugou/yy/rank/home/{}-8888.html?from=rank'.format(str(i)) for i in range(1,24)]

3. 构造请求头,防止反爬虫

下载fiddler,抓取访问酷狗官网时的包,点击打开,查看user-agent信息

headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/53\
        7.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
    }

二、 通过url获取网页源代码:

1. 下载Requests包

pip  install Requests

2. 获取目标网址的网页源代码

response = requests.get(url, headers=headers).text


成功将网页爬取到pycahrm中

三、 使用python的BeautifulSoup库提取所需信息:

1. BeautifulSoup库中有一个select函数,可以通过chrome的selctor自动识别

要截取的目标元素
按F12进入开发模式,找到目标元素对应的代码

右键,复制为selector

提取数据部分代码:

 html = BeautifulSoup(html)
    names=html.select('#rankWrap > div.pc_temp_songlist > ul > li > a')

    #获取歌手和歌曲名称
    for name in names:
        singer.append(name['title'].split('-')[0])
        song.append(name['title'].split('-')[1])
    #获取歌曲时长
    times = html.select('#rankWrap > div.pc_temp_songlist > ul > li> span.pc_temp_tips_r > span')
    for t in times:
        l = str(t)
        l = re.sub('\s+', ' ', l)
        l = re.search("(\d{1,2}:\d{1,2})", l)
        time.append(l.group(1))

四、 将获取的数据打包生产JSON格式:

1. 用zip函数将几个list打包并生成JSON格式数据

  d=[]
    size = list(range(500))
    for i, r, p, q in zip(size, singer, song, time):
        data = {
            '排名': i + 1,
            '演唱者': r,
            '歌曲名称': p,
            '歌曲时长': q
        }
        d.append(data)
    str_json = json.dumps(d, indent=2, ensure_ascii=False)

2. 保存到 'kugou.json文件中

with open('kugou.json, 'w') as f:
    f.write(json.dumps(str_json))

五、 测试JSON格式是否正确:

python代码
import json
with open('D:\pythonProject\exp\kugou.json,'r') as f:
    str_json=f.read()
str_json=json.loads(str_json)
print(str_json)

结果

本文标签: 酷狗歌曲音乐信息TOP