这个节点,就可以找到歌曲名字了吧。
看代码:
点击F12查看网页信息:
点击左上角箭头:
选中歌曲名:
每一首歌曲都是这种形式:
看程序:
texts = driver.find_elements_by_class_name('sn')
每一首歌曲里都有个
for each in texts:
text = each.find_element_by_class_name('text')
file.write(text.text + '\n')
print(text.text)
这里加了个for循环,因为texts是一组元素(包含了所有歌名的),我们需要用for循环得到每一个歌名,把歌名分开来。
这样我们就可以得到赵雷的第一页的歌曲:
但是现在我们需要的是赵雷的全部歌曲,怎么办?
先看代码:
bt = driver.find_element_by_link_text('下一页')
bt.click()
第一句的意思我们定位到下一页这个地方,
第二局用来实施点击翻页,
num = 0
file = open('赵雷.txt', 'w', encoding='utf-8')
while num < 18:
texts = driver.find_elements_by_class_name('sn')
print(texts)
for each in texts:
text = each.find_element_by_class_name('text')
file.write(text.text + '\n')
print(text.text)
bt = driver.find_element_by_link_text('下一页')
bt.click()
num = num + 1
这里有一个while循环,因为一共有
17页,所以令while <18,得到所有的歌曲。
另外请注意:
有个
这说明嵌套了表单,我们首先需要定位到这个表单:
driver.switch_to.frame('g_iframe')
下面给出完整代码:
from selenium import webdriver
#option = webdriver.FirefoxOptions()
#option.add_argument('user-agent="Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (''KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"')
# 你自己的地址
location = 'D:/Program Files/Mozilla Firefox/firefox.exe'
driver = webdriver.Firefox(firefox_binary=location)
#driver = webdriver.Firefox(firefox_options=option)
driver.get('https://music.163.com/#/search/m/?s=%E8%B5%B5%E9%9B%B7&type=1')
driver.switch_to.frame('g_iframe')
num = 0
file = open('赵雷.txt', 'w', encoding='utf-8')
while num < 18:
texts = driver.find_elements_by_class_name('sn')
print(texts)
for each in texts:
text = each.find_element_by_class_name('text')
file.write(text.text + '\n')
print(text.text)
bt = driver.find_element_by_link_text('下一页')
bt.click()
num = num + 1
driver.quit()
file.close()