仅供学习参考
以网易云排行榜为例
1、获取动态数据可以用selenium实现
2、获取frame框架里面的数据,可以用下面代码的方式实现
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://music.163.com/#/discover/toplist')
driver.maximize_window()
# # 方法一
# # 获取frame
## 直接切换到frame里面
# driver.switch_to.frame('g_iframe') # frame括号里面的是它的id
# trs = driver.find_elements_by_tag_name('tr')
# print(trs)
# 方法二
# 先获取标签
iframe = driver.find_element_by_id('g_iframe')
# 再切换到frame
driver.switch_to.frame(iframe)
# trs = driver.find_elements_by_tag_name('tr')
parent = driver.find_element_by_id('song-list-pre-cache')
table = parent.find_elements_by_tag_name('table')[0]
tbody = table.find_elements_by_tag_name('tbody')[0]
trs = tbody.find_elements_by_tag_name('tr')
print(trs)
for each in trs:
print(each.find_elements_by_tag_name('td')[0].text)
print(each.find_elements_by_tag_name('td')[3].find_elements_by_tag_name('div')[0].get_attribute('title'))