[frame操作]获取网易云音乐内今日飙升榜歌单

一、frame概述
(1)使用frame可以实现同一窗口中显示不止一个页面。在web应用中,前端网页设计会用到iframe/frame表单嵌套页面的应用,一个页面嵌套多个HTML/JSP文件。且嵌套的HTML是独立使用互不影响的,经常出现在网页中的导航。
(2)selenium webdriver只能在同一页面识别定位元素,只能识别当前所在位置的页面上的元素。
(3)frame相关标签有三种:frameset、frame、iframe
- \<frameset>框架结构标签,定义如何将窗口分割为框架;每个frameset定义了一系列行或列;rows/columns的值规定了每行或每列占屏幕的面积。
- \<frame>框架标签,定义了放置在每个框架中的HTML文档。
- \<iframe>用于在网页内显示网页

二、实操
(1)搜索框中搜索frame,查看网页是否使用了frame方案。
使用switch_to.frame('id值或name'/函数)方法先切入到该层后再对该层元素进行操作。
- switch_to.frame('指定'):切到指定frame层,可以‘id或name’(str)、

index(int)、元素(element)定位方法find_element_by_属性;
- switch_to.parent_frame():切到父级frame,即切到上一层;
- switch_to.default_content():切到主文档,即第一层HTML。

(2)获取网易云音乐内今日飙升榜歌单。

复制代码
 1 #爬出飙升榜歌曲和歌手  
 2 from selenium import webdriver  
 3 import time  
 4 import xlwt  
 5 wbd = webdriver.Chrome()  
 6 wbd.get('https://music.163.com/')  
 7   
 8 wbd.find_element_by_css_selector('#g_nav2 > div > ul > li:nth-child(2) > a').click()  
 9 time.sleep(5)  
10 wbd.switch_to.frame('g_iframe')  
11 time.sleep(5)  
12 w1=wbd.find_element_by_css_selector('h2.f-ff2')    
13 title=w1.text  
14 songlist=wbd.find_elements_by_css_selector('span>a>b') #复数形式  
15 sl=[]  
16 for i in songlist:  
17     sl.append(i.get_attribute('title'))  
18 singerlist=wbd.find_elements_by_css_selector('div.text')  
19 srl=[]  
20 for j in singerlist:  
21     srl.append(j.get_attribute('title'))  
22 timed=wbd.find_element_by_css_selector('span.s-fc3').text  
23 print(sl)  
24 print(srl)  
25 time.sleep(3)  
26 wbd.quit()  
27   
28 book=xlwt.Workbook()#新建工作簿  
29 sheet1=book.add_sheet(title) #创建sheet页表  
30 \#写入行和列  
31 sheet1.write(0,0,'歌曲')  
32 sheet1.write(0,1,'歌手')  
33 sheet1.write(0,2,timed)  
34 row1=1 #
35 for song in sl:  
36     sheet1.write(row1,0,song)  
37     row1+=1  
38 row2=1  
39 for singer in srl:  
40     sheet1.write(row2,1, singer)  
41     row2+=1  
42   
43 book.save('E:\XX-Software Test\web crawler\songTop.xls') #保存工作簿,可自定义路径,否则直接保存到项目内  
44 print('write done.')
复制代码

 

posted @   无论怎样new个对象  阅读(253)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示