Python爬虫练习之酷狗音乐TOP100

前言

最近在练习使用python爬取互联网数据,特此将一些练习的案例共享,由于是毫无经验的初学者,所以代码编写还不熟练,敬请赐教。

*程序使用jupyter notebook编写


#导入所需库,没有提前安装的可使用代码pip install 库名称

import requests

from bs4 import BeautifulSoup

import pandas as pd

#设置请求头,以模拟浏览器发起请求

headers = {'User-Agent':'***********'} #此处隐藏笔者浏览器的请求头,读者可复制自己浏览器请求头到此处

#创建空列表,用来储存获得数据

r_lis = []

n_lis = []

t_lis = []

#创建一个循环,遍历网页(第1-5页)

for j in range(1,6):

    j = str(j)

    url = 'https://www.kugou.com/yy/rank/home/'+j+'-8888.html?from=rank'

    #发起请求

    res = requests.get(url,headers=headers)

    html = res.text

    #解析获取到的html

    soup = BeautifulSoup(html,'lxml')

    #通过标签路径获取相关信息

    lis = soup.select('div > div > div > div > div > div > ul >li')


    #遍历列表

    for i in range(len(lis)):

        #获取排名,并去掉多余空格

        rank = lis[i].select('.pc_temp_num')[0].text.strip()

        #获取歌手歌曲名,并去掉多余空格和其他多余字符串

        name = lis[i].select('.pc_temp_songname')[0].text.strip().replace('\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t','')

        #获取歌曲时长

        time = lis[i].select('.pc_temp_time')[0].text.strip()


        #将数据追加到空列表

        r_lis.append(rank)

        n_lis.append(name)

        t_lis.append(time)

#创建DataFrame

df = pd.DataFrame({'排名':r_lis,'歌曲':n_lis,'时长':t_lis})

#新增日期列

import time

df['日期'] = time.strftime("%Y/%m/%d",time.localtime(time.time()))

#数据分列

df_new = df['歌曲'].str.split("-",expand=True)

df['歌曲名'] = df_new[0]

df['歌手'] = df_new[1]

#删除不需要的列

df.drop(columns=['歌曲'],inplace=True)

#重新对列名进行排序

L = ["排名","歌曲名","歌手","时长","日期"]

df = df.reindex(columns=L) #对列名重新排序

#输出前100行数据

df.head(100)


代码运行结果:

你可能感兴趣的:(Python爬虫练习之酷狗音乐TOP100)