python爬虫(9)爬虫实例(5)

案例描述
爬取酷狗音乐TOP500榜单所有音乐的排名、歌手及歌曲、时长的信息,并打印出来。代码如下所示。

# -*- coding: utf-8 -*-

import requests
from bs4 import BeautifulSoup
import time

header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

def  get_info(url):
    song_res = requests.get(url, headers = header)
    song_soup = BeautifulSoup(song_res.text, 'html.parser')
    song_ranks = song_soup.select('#rankWrap > div.pc_temp_songlist > ul > li > span.pc_temp_num')
    song_names = song_soup.select('#rankWrap > div.pc_temp_songlist > ul > li > a')
    song_times = song_soup.select('#rankWrap > div.pc_temp_songlist > ul > li > span.pc_temp_tips_r > span')
    for song_rank, song_name, song_time in zip(song_ranks, song_names, song_times):
        song_dict = {
                '歌曲排名':song_rank.get_text().strip(),
                '歌手&歌曲':song_name.get_text().strip(),
                '时长':song_time.get_text().strip()
                }
        time.sleep(0.5)
        print(song_dict)

if __name__ == '__main__':
    for i in range(1,24):
        url =  'http://www.kugou.com/yy/rank/home/' + str(i) + '-8888.html?from=rank'
        get_info(url)
        time.sleep(1)

代码分析
(1)1-5行,导入程序所需要的库;
(2)7行,给定请求头,模仿浏览器行为;
(3)9-22行,定义get_info()函数,函数功能为:请求网页、获取音乐排名、歌曲&歌手、时长的信息,并将这些信息赋给字典song_dict。信息获取方法为select函数,配合浏览器F12的Copy Select;
(4)24-28行,定义本py函数的主入口(其实在本例中,__main.py是多此一举,为了规范性才加上去);分析酷狗音乐榜会发现,每一个页面只显示22首歌曲,利用循环访问23个页面,从而获取500首歌曲的信息。最后的time.sleep函数,表示执行一次函数,暂停1s,避免被反爬机制识别出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值