爬取网易云音乐所有歌单

网易云音乐歌单首页
歌单第二页链接
歌单第三页链接

可以看出只有最后的数字在变化,所以进行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()


分别爬取了歌单名称、url、播放次数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,888评论 0 15
  • 那时 天也不蓝 阳光也不暖 寒风凛冽 河水冰结 花也没开 你也没来 那时 你还没把你种到我心里 那时 我还没有爱上你
    柴子恒阅读 122评论 0 1
  • “仁者爱人,为仁由己。唯仁者能好人,能恶人。克己复礼为仁,一日克己复礼,天下归仁焉。”做人的礼节很重要,读书...
    益达不好吃阅读 405评论 0 0
  • 上交打路钱十年今年打吗/?
    2a52090c8b3d阅读 125评论 0 0