爬虫-网易云音乐

import requests
from lxml import etree

class WangyiMusic:
    def __init__(self,url):
        self.tree = self.request_html(url)
        self.parse_html()
    def request_html(self,url):
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'
        }
        response = requests.get(url=url, headers=headers).text
        tree = etree.HTML(response)
        return tree

    def parse_html(self):
        singer_list = self.tree.xpath('//div[@id="singer-cat-nav"]/div')
        for singer in singer_list:
            name_list = singer.xpath('.//a/text()')
            href_list = singer.xpath('.//a/@href')
            # print(href_list)
            base_url = 'https://music.163.com'
            for i, j in zip(name_list, href_list):
                name = i
                href = j
                print('===================={}======================='.format(name))
                singer_url = base_url + href
                # response2 = requests.get(url=singer_url, headers=headers).text
                # 根据歌手分类进行第二次请求
                tree2 = self.request_html(singer_url)
                # with open('huayunan.html','w',encoding='utf-8') as f:
                #     f.write(response2)
                letter_list = tree2.xpath('//ul[@id="initial-selector"]/li[position()>1]/a/@href')
                for letter in letter_list:
                    letter_url = base_url + letter
                    # print(letter_url)
                    # response3 = requests.get(url=letter_url, headers=headers).text
                    # 根据歌手首字母分类进行第三次请求
                    tree3 = self.request_html(letter_url)
                    singer_name = tree3.xpath('//ul[@id="m-artist-box"]//a[@class="nm nm-icn f-thide s-fc0"]/text()')
                    print(singer_name)

if __name__ == '__main__':

    url = 'https://music.163.com/discover/artist/'
    WangyiMusic(url)




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值