【爬虫】使用DrissionPage爬取网易云音乐热歌榜

DrissionPage

DrissionPage 是一个基于 python 的网页自动化工具。
它既能控制浏览器,也能收发数据包,还能把两者合而为一。
可兼顾浏览器自动化的便利性和 requests 的高效率。
它功能强大,内置无数人性化设计和便捷功能。
它的语法简洁而优雅,代码量少,对新手友好。

概述

SessionPage

用于收发数据包的页面对象,只能收发数据包,不能控制浏览器。

ChromiumPage

用于控制浏览器的对象。除了控制一个页面,还能对浏览器整体进行操作,如调整窗口大小位置、管理文件下载、增删标签页等。

WebPage

整合SessionPage和ChromiumPage两者功能的页面元素,拥有两者加起来的全部功能。运行时有 s 和 d 两种模式,能够在两种模式间同步登录信息。

使用SessionPage爬取网易云热歌榜

顾名思义,SessionPage是一个使用Session(requests 库)对象的页面,它使用 POM 模式封装了网络连接和 html 解析功能,使收发数据包也可以像操作页面一样便利。

代码

# 导入
from DrissionPage import SessionPage
from DataRecorder import Recorder

# 创建页面对象
page = SessionPage()

# 创建记录器对象
recorder = Recorder('music_data.csv')

# 请求网站url 网易云音乐 热歌榜 top200
page.get('https://music.163.com/discover/toplist?id=3778678')

# 遍历页面上所有 li 元素 获取热歌榜Top200的歌名和url
for index,li in enumerate(page.eles('xpath://ul[@class="f-hide"]/li')):
    music_ranking = index + 1 # 排名
    music_title = li.ele('tag:a').text 
    music_url = li('tag:a').attr('href')
    # 请求歌曲url 获取歌手姓名
    page.get(music_url)
    music_singer = page.ele('xpath://p[@class="des s-fc4"]/span').text
    # print(music_ranking,music_title,music_singer)

    # 写入到记录器
    recorder.add_data((music_ranking,music_title,music_singer))

recorder.record()

运行

在这里插入图片描述
程序生成一个结果文件 data.csv,内容如下图:
在这里插入图片描述

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值