selenium切换iframe框架案例——翻页爬取网易云音乐歌单作者和名称
翻页爬取网易云音乐歌单作者和标题
案例目的:
通过翻页selenium操作网易云音乐,介绍如何切换iframe框架以及如何使用selenium定位数据所在的节点。
代码功能:
输入下载的数据页数,自动获取歌单中歌曲名称以及作者
找到目标的url:
右键检查,找到歌单中歌曲名称和作者所在的节点位置:
通过节点位置,我们可以得到数据的xpath语法:
但是,注意,我们需要的歌单名称和作者是在iframe框架的。意思也就是他们采用的是网页套网页的方式。
因此,我们需要切换到iframe框架下才能提取到目标数据。如下图:
最后,翻页操作:
方法一:通过定义"下一页"所在的节点,模拟点击,进行翻页
方法二:通过找到url的规律实现翻页
这里我们使用方法二,通过寻找url的规律实现翻页操作
对比前三页的url:
https://music.163.com/#/discover/playlist/order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=0
https://music.163.com/#/discover/playlist/order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=35
https://music.163.com/#/discover/playlist/order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=70
由上图,可得到url规律在于offset参数。
分析完毕,上代码:
from selenium.webdriver import Chrome
import jsonif __name__ == '__main__':# 输入要爬取的页数pages = int(input('请输入要爬取的页数:'))# 创建浏览器对象(打开浏览器)chrome = Chrome()# 在网址栏输入目标的url打开网页song_list = []author_list = []for i in range(pages):offset = i*35chrome.get(f'https://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset={offset}')# 注意:需要先切换框架chrome.switch_to.frame('g_iframe')# 通过xpath语法定位歌单名称和作者所在的位置nodes = chrome.find_elements_by_xpath('//ul[@id="m-pl-container"]/li')for node in nodes:song_name = node.find_element_by_xpath("./p[1]/a").textauthor_name = node.find_element_by_xpath("./p[2]/a").textsong_list.append(song_name)author_list.append(author_name)for i in range(len(song_list)):dict_ = {}dict_[song_list[i]] = author_list[i]# 将数据转换成json格式json_data = json.dumps(dict_,ensure_ascii=False)+',\n'# 将数据保存到本地with open('网易云歌单信息.json','a',encoding='utf-8')as f:f.write(json_data)
我爬取了两页(每一页对应35个数据)
执行结果如下:
selenium切换iframe框架案例——翻页爬取网易云音乐歌单作者和名称相关推荐
- 用python爬取网易云音乐歌单列表
本文分为两个部分:基础知识和正文,其中基础知识包括什么正则表达式以及Beautifulsoup4的使用. 一.正则表达式 正则表达式用于字符串查找.合法性检查以及作为程序员的工具箱使用. 字符串查找: ...
- python爬取网易云音乐歌单_【python】爬取并批量下载网易云歌单,嗨翻暑假!
[Python] 纯文本查看 复制代码# 利用 Selenium 抓取淘宝商品并用 PyQuery 解析得到商品的图片.名称.价格.购买人数. # 店铺名称.店铺所在地信息,并将其保存到MongoDB ...
- python爬取音乐歌曲大全_Python爬取网易云音乐歌单歌曲
# 从网易云音乐下载歌单歌曲 # 参考了这些网址 # https://blog.csdn.net/Ciiiiiing/article/details/62434438 # https://github ...
- Python爬取网易云音乐歌单内所有歌曲
一.目标: 下载网易云音乐热门歌单 二.用到的模块: requests,multiprocessing,re. 三.步骤: (1)页面分析:首先打开网易云音乐,选择热门歌单,可以看到以下歌单列表,然后 ...
- python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名
目标网站: 首先获取第一页的数据,这里关键要切换到iframe里 打印一下 获取剩下的页数,这里在点击下一页之前需要设置一个延迟,不然会报错. 结果: 一共37页,爬取完毕后关闭浏览器 完整代码: u ...
- Python爬取网易云音乐歌单名以及歌单标签
爬取网易云音乐歌单名以及歌单标签 正则表达式 .可以匹配任意字符,所以:要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个 ...
- 骚年,还在为歌荒发愁吗?python教你爬取网易云热门歌单
需求分析 每当歌荒时,总想找那些播放量比较高的歌单听,毕竟这么多人选择的歌单歌曲质量总会有保证. 爬取目标 本文将提取网易云音乐 播放量在1000万 以上的歌单名称,播放量和链接地址. 准备工作 保证 ...
- python网络爬虫-爬虫实战-(爬取网易云薛之谦歌单里歌曲并下载)
1.导入要用到的库 #导入库 import requests from fake_useragent import UserAgent from lxml import etree import re ...
- 利用python爬取网易云心爱歌单
一 cookie是什么东西? 小饼干?糖果?能吃吗? 简单来说就是你第一次用账号密码访问服务器 服务器在你本机硬盘上设置一个身份识别的会员卡(cookie) 下次再去访问的时候只要亮一下你的卡片(co ...
最新文章
- java 修饰符 访问控制符_Java访问修饰符(访问控制符)
- 数据上报痛点解决方案
- 简单调试 Bash 脚本
- 网友写的验证码生成方案,可防止绝大多数机械识别。
- 基于XAMPP的Testlink安装方法
- Linux进程管理之SMP负载平衡
- 如何激发孩子的想象力_如何培养孩子想象力
- 单片机编程软件很简单(20),快速学会keil单片机编程软件
- c语言课程设计题目 吃豆子,C语言吃豆子游戏
- K3 ERP 系统财务管理 - 账结法、表结法
- SPDA-CNN:Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition
- 微信公众号怎么变现?
- iPhone X 适配
- Kusto Query Language (KQL) 学习笔记
- 神奇的兔子序列(斐波那契数列)
- Python 函数 sort(),sorted() 之区别及 key=lambda x:x[] 之理解
- Java8 Lambda表达式(三)Lambda表达式与Stream API
- 保健中药不贵胜过市面上的保健品
- 计算机在盲童音乐教学中的具体应用,盲童钢琴启蒙教学实践探析
- 字符指针数组(二级指针)