实例学习——爬取酷狗TOP500数据

 酷狗网址:https://www.kugou.com/yy/rank/home/1-8888.html?from=rank

 环境:eclipse+pydev

import requests
from bs4 import BeautifulSoup
import time

headers ={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 QIHU 360EE'
          }    #加入请求头,伪装成浏览器,以便更好抓取数据

def get_info(url):           #定义获取信息的函数
    wb_data = requests.get(url,headers = headers)
    soup = BeautifulSoup(wb_data.text,'lxml')
    ranks = soup.select('span.pc_temp_num')                     #selet()方法见下面图示
    titles = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > a')  
    times = soup.select('span.pc_temp_tips_r > span')
    for rank,title,time in zip(ranks,titles,times):
        data = {
            'rank':rank.get_text().strip(),                #歌曲序号
            'singer':title.get_text().split('-')[0],       #歌手名称
            'song':title.get_text().split('-')[1],         #歌曲名称
            'time':time.get_text().strip()                 #歌曲时长
        }         
        print (data)     
        
if __name__ == '__main__':                #程序主入口
    urls = ['https://www.kugou.com/yy/rank/home/{}-8888.html?from=rank'.format(str(i)) for i in range(1,24)]            #构建多页url,500条结果需23组,每页网页22条
    for url in urls:
        get_info(url)
        time.sleep(1)            #暂停程序,避免因提交网页请求频率过快而导致程序异常终止
        
        
    

 请求头获取方式:打开chrome浏览器,输入chrome://version,添加时加上‘User-Agent’:即可(获得信息应置于' '中)。

select()使用方法:该方法类似于中国>广东省>惠州市,从大到小,提取信息,可通过chrome复制得到,如图示:

     

             注意:将li:nth-of-child(1)改为li

运行结果:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是Python爬取豆瓣音乐TOP250数据的代码实例: ```python import requests from bs4 import BeautifulSoup url = 'https://music.douban.com/top250' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} def get_music_info(url): res = requests.get(url, headers=headers) soup = BeautifulSoup(res.text, 'html.parser') music_list = soup.find('div', class_='article').find_all('tr', class_=lambda x:x and x.startswith('item')) for music in music_list: rank = music.find('td', class_='').get_text().strip() music_name = music.find('div', class_='pl2').find('a').get_text().strip() music_info = music.find('div', class_='pl2').find('p').get_text().strip().split('/') music_artist = music_info[0].strip() music_album = music_info[1].strip() music_year = music_info[2].strip() if len(music_info) == 4 else '' music_rating = music.find('span', class_='rating_nums').get_text().strip() music_votes = music.find('span', class_='pl').get_text().strip() print("排名:{}\n歌曲名:{}\n歌手:{}\n专辑名:{}\n发行年份:{}\n评分:{}\n评论数:{}\n".format(rank, music_name, music_artist, music_album, music_year, music_rating, music_votes)) for i in range(0, 250, 25): get_music_info(url + '?start=' + str(i)) ``` 这个程序使用了requests和BeautifulSoup库来爬取豆瓣音乐TOP250的数据。程序首先定义了请求的URL和请求头部,然后使用requests库来获取网页的HTML文本内容,并使用BeautifulSoup库来解析HTML文本内容。 程序中的`get_music_info`函数用来获取每个音乐的详细信息,并将信息打印出来。在主程序中,我们将URL的`start`参数从0循环到225,每次调用`get_music_info`函数来获取一页的数据。 希望这个实例能够帮到你!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值