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

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

思路

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': 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值