java爬取网易云歌单_爬取网易云音乐所有歌单

使用Python的requests和lxml库,通过多进程Pool进行并行抓取,构造URL从第一页到最后一页(每页35条,共1300条数据),获取每个歌单的名称、URL及播放次数,数据存储到CSV文件中。
摘要由CSDN通过智能技术生成

ccada640b6b3

网易云音乐歌单首页

ccada640b6b3

歌单第二页链接

ccada640b6b3

歌单第三页链接

可以看出只有最后的数字在变化,所以进行url的构造,然后开始爬取

import csv

from lxml import etree

import requests

from multiprocessing.dummy import Pool

import time

headers = {

'Referer':'http://music.163.com/',

'Host':'music.163.com',

# 'User-Agent':'Mozilla/5.0 (X11: Linux *86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.3.0',

'User-Agent': 'Mozilla/5.0 (X11: Linux *86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.3.0',

'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

}

wangyi='http://music.163.com'

base_url='http://music.163.com/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset={}'

urlList=[] #保存构造出的链接

def totalPage():

for i in range(0,1300,35):

url=base_url.format(i)

urlList.append(url)

def getData(url):

r=requests.get(url,headers=headers)

html=etree.HTML(r.text)

MFlist=html.xpath("//p[@class='dec']/a/text()")

MFurl=html.xpath("//p[@class='dec']/a/@href")

LisNum=html.xpath("//span[@class='nb']/text()")

for i in range(len(MFlist)):

write.writerow([MFlist[i],wangyi+MFurl[i],LisNum[i]])

time.sleep(3) #延时,防止IP被封

f=open('Allmusicform.csv','a+',newline='',encoding='utf-8')

write=csv.writer(f)

p=Pool(4)

totalPage()

p.map(getData,urlList)

p.close()

ccada640b6b3

分别爬取了歌单名称、url、播放次数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值