网易云歌手爬取

本文介绍如何利用Python进行网络爬虫,详细解析爬取网易云音乐平台上的歌手信息,包括获取网页源码、解析HTML、数据存储等步骤,带你深入理解网络爬虫的基本流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#需求:获取每一个大分类下的每个子分类下的所有歌手名

#思路:
#1.获取大分类的URL,并请求
#2.获取小分类的URL,并请求
#3.获取歌手名


import requests
from lxml import etree

#定义请求函数
def get_requests(url):
    response = requests.get(url=url, headers=headers)
    return etree.HTML(response.text)

def get_big_type(url):
    #转换成HTML元素对象
    html = get_requests(url)
    #获取大分类的URL
    big_type_list = html
### 使用Python爬虫抓取网易云音乐歌手ID 为了实现从网易云音乐网站抓取歌手ID的功能,可以采用Scrapy框架来构建爬虫程序。以下是具体的操作方法: #### 创建Scrapy项目 首先,在命令行工具中输入`scrapy startproject MusicSpider`创建一个新的Scrapy工程[^1]。 ```bash scrapy startproject MusicSpider ``` 这将在当前工作目录下生成名为MusicSpider的新文件夹,其内部结构遵循标准的Scrapy项目布局。 #### 编写Items定义 接着编辑位于`items.py`中的模型类,用于表示要采集的数据项。对于本案例而言,只需关注两个字段——歌曲名称(`name`)以及演唱者姓名(`singer`)即可满足需求[^3]。 ```python import scrapy class SingerIdItem(scrapy.Item): id = scrapy.Field() name = scrapy.Field() ``` 这里新增了一个`id`属性专门用来存储目标页面上的唯一标识符即歌手ID。 #### 修改Settings设置 打开并调整`settings.py`里的参数选项,确保能够高效稳定地执行任务。例如适当增加下载延时减少服务器压力;开启日志记录便于调试错误等操作。 ```python # 下载中间件配置 DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, } # 自定义User-Agent字符串模拟浏览器访问 USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" # 启用自动限流机制防止被封禁IP地址 AUTOTHROTTLE_ENABLED = True ``` #### 开发Spiders逻辑 最后一步是在`sipders`子包内建立具体的爬虫模块,负责解析HTML文档定位所需信息位置,并调用之前声明过的item实例填充实际值完成入库流程。考虑到网易云音乐API接口的存在,可以直接通过HTTP请求获取JSON格式响应体内的数据而无需依赖复杂的DOM树遍历算法简化开发难度[^2]。 ```python import json import scrapy from ..items import SingerIdItem class NetEaseCloudSpider(scrapy.Spider): name = 'netease_cloud' allowed_domains = ['music.163.com'] base_url = f"https://api.imjad.cn/cloudmusic/?type=toplist&id=" def parse(self, response): data = json.loads(response.text) artists = data.get('artists', []) for artist in artists: item = SingerIdItem() item['id'] = str(artist.get('id')) item['name'] = artist.get('name') yield item def start_requests(self): urls = [ self.base_url + str(i) for i in range(1, 10) ] for url in urls: yield scrapy.Request(url=url, callback=self.parse) ``` 上述脚本实现了向第三方提供的非官方API发送GET请求读取榜单详情页里包含的所有艺人资料片段,再逐一映射至对应的实体对象最终提交给管道组件做进一步加工处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值