【python爬虫案例】利用python爬取豆瓣音乐评分TOP250的排行数据! ...

打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

一、爬取案例-豆瓣音乐TOP250

之前给大家分享了2个豆瓣的python爬虫案例:
【python爬虫案例】利用python爬虫爬取豆瓣电影评分TOP250排行数据!
【python爬虫案例】利用python爬虫爬取豆瓣读书评分TOP250的排行数据!
 
今天再给大家分享一下:豆瓣音乐排行榜TOP250的python爬虫案例!
爬虫的流程和逻辑上都和之前分享过的2篇文章差不多
这次爬取的目标网址是:https://music.douban.com/top250

老例子!咱们以目标为驱动,先来看下爬虫爬取乐成后得到的csv文档数据

那代码是如何实现豆瓣音乐TOP250数据爬取的了?下面逐一讲解一下python实现。
二、豆瓣音乐TOP250网站分析

通过浏览器F12查看全部哀求,发现他并没有发送ajax哀求,那阐明我们要的TOP250的排行榜数据大概率是在html页面内容上。

于是我们 点击右键->查看网页源代码 ,发现我们必要的豆瓣音乐评分的排行榜数据都在html页面里

这就简单了,我们直接往下看,上代码。
三、python爬虫代码详解

起首,导入我们必要用到的库
  1. import requests     # 发请求
  2. from lxml import etree  # 解析html
  3. import pandas as pd  # 存取csv
复制代码
然后,向豆瓣音乐TOP250的网页发起哀求,得到html页面内容
  1. page_source = requests.get(page_url, headers=headers).text
复制代码
用lxml库解析html页面
  1. tree = etree.HTML(page_source)
复制代码
使用xpath来提取我们必要的音乐排行榜数据内容
  1. # 获得数据所在的标签
  2. tables = tree.xpath("//div[@class='indent']/table")
  3. # 循环标签获得音乐信息
  4. for table in tables:
  5.     pl2 = table.xpath(".//div[@class='pl2']")[0]
  6.     # 抓取数据
  7.     url = extract_first(pl2.xpath("./a/@href"))     # 专辑链接
  8.     music_name = extract_first(pl2.xpath("./a/text()"))     # 专辑名称
  9.     score = extract_first(pl2.xpath(".//span[@class='rating_nums']/text()"))    # 评分
  10.     score_people_num = extract_first(pl2.xpath(".//span[@class='pl']/text()"))
  11.     score_people_num = re.search("\d+", score_people_num).group()   # 评分人数
  12.     info_text = extract_first(pl2.xpath("//p[@class='pl']/text()"))
  13.     infos = info_text.split("/")
  14.     singer = infos[0].strip()  # 歌手
  15.     publish_date = infos[1].strip() # 发行日期
  16.     type = infos[2].strip()     # 类型
  17.     media = infos[3].strip()    # 介质
  18.     style = infos[4].strip()     # 曲风
复制代码
最后,我们将爬虫爬取的数据保存到csv文档里
  1. def save_to_csv(csv_name):
  2.     """
  3.     数据保存到csv
  4.     @param csv_name: csv文件名字
  5.     @return:
  6.     """
  7.     df = pd.DataFrame()  # 初始化一个DataFrame对象
  8.     df['专辑名称'] = music_names
  9.     df['专辑链接'] = urls
  10.     df['歌手'] = singers
  11.     df['评分'] = scores
  12.     df['评分人数'] = score_people_nums
  13.     df['发行日期'] = publish_dates
  14.     df['类型'] = types
  15.     df['介质'] = medias
  16.     df['曲风'] = styles
  17.     df.to_csv(csv_name, encoding='utf8', index=False)  # 将数据保存到csv文件
复制代码
上面的music_names、urls等变量都是使用的list来进行存储的,如许才能符合pandas导出数据时的必要,然后调用to_csv()方法保存即可。
如许,爬取的豆瓣音乐排行榜数据就持久化保存到我们的文档里了。
必要注意的是!豆瓣页面上第4、5、6页只有24首(不是25首)音乐,所以总数量是247,不是250。
不是爬虫代码有标题,是豆瓣页面上就只有247条数据。
四、python爬虫源代码获取

我是@王哪跑,持续分享python干货,各类副业技巧及软件!
附完备python源码及csv表格数据:【python爬虫案例】利用python爬取豆瓣音乐评分TOP250的排行数据

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

傲渊山岳

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表