使用Python抓取网易云音乐所有歌手信息

本文介绍如何使用Python通过requests和lxml库抓取网易云音乐中所有歌手的详细信息,包括歌手ID、名字、分类和主页链接。在抓取过程中,通过并发处理提高效率,并讨论了可能遇到的问题,如IP被禁导致的503错误。最终成功获取到超过3万条歌手数据。

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

思路

1. 构造请求页面的URL

每个页面由歌手分类和歌手名字的大写字母值构成,比如,”http://music.163.com/discover/artist/cat?id=1001&initial=65“,就是请求华语男歌手,字母为”A”的所有歌手

2. 请求数据

请求数据使用的是requests包,当请求的网址没有错误并且status_code为200时,返回网页的内容。

注意:这里并没改变请求的headers,也没有使用代理

3. 解析数据

使用lxml包进行html解析,抓取包括歌手id,name,cat,userhome四个信息

4. 存储到MongoDB

存储时将歌手id作为数据表的’_id’,由于歌手id唯一性,可以防止数据库中的文档重复插入

import requests
from requests.exceptions import RequestException
from lxml import etree
from pymongo import MongoClient
from concurrent import futures

CATS = {
            '1001': '华语男歌手',
            '1002': '华语女歌手',
            '1003': '华语组合/乐队',
            '2001': '欧美男歌手',
            '2002': '欧美女歌手',
            '2003': '欧美乐队/组合',
            '6001': 
Python爬虫抓取网易云音乐排行榜通常会涉及网络请求、HTML解析以及数据处理。你可以使用一些Python库,如requests库用于发送HTTP请求获取网页内容,BeautifulSoup或PyQuery等库来解析HTML页面提取需要的数据。 以下是一个简单的步骤概述: 1. **安装所需库**: 首先,确保已经安装了`requests`, `lxml` 或 `bs4`(BeautifulSoup的一个版本)等库。如果没有,可以使用pip进行安装: ``` pip install requests beautifulsoup4 ``` 2. **发送GET请求**: 使用requests库向网易云音乐的API(如果有的话,通常直接访问API效率更高)或网站主页发起GET请求,获取HTML源码。 3. **解析HTML**: 将返回的HTML代码作为输入给BeautifulSoup,它能帮助我们找到包含排行榜信息的部分。比如,查找特定CSS类或ID对应的元素。 4. **提取数据**: 从解析后的HTML中提取歌曲名称、歌手名、播放量、评分等信息。这通常涉及到查找并解析如`<a>`, `<span>`等标签的内容。 5. **存储数据**: 最后,将抓取到的数据保存到文件、数据库或者数据结构(例如字典或列表)中。 请注意,由于版权和反爬虫策略的原因,直接爬取实时排行榜可能会受限,网易云音乐可能会有IP限制或者频繁请求会被封锁。因此,在实际操作时,你需要遵守服务条款,并采取合适的措施(如设置延迟时间、代理IP轮换等)来避免过于激进。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值