python 爬取 网易云音乐(赵雷)

首先分析网页:

点击F12查看网页信息:
python 爬取 网易云音乐(赵雷)_第1张图片
点击左上角箭头:
python 爬取 网易云音乐(赵雷)_第2张图片
选中歌曲名:
python 爬取 网易云音乐(赵雷)_第3张图片
每一首歌曲都是这种形式:
看程序:

texts = driver.find_elements_by_class_name('sn')

每一首歌曲里都有个


所以这里用 driver.find_elements_by_class_name定位到这个元素
注意elements是找到一组元素。
继续分析:
我们只需要再往下寻找到
这个节点,就可以找到歌曲名字了吧。
看代码:

for each in texts:
        text = each.find_element_by_class_name('text')
        file.write(text.text + '\n')
        print(text.text)

这里加了个for循环,因为texts是一组元素(包含了所有歌名的),我们需要用for循环得到每一个歌名,把歌名分开来。
这样我们就可以得到赵雷的第一页的歌曲:
python 爬取 网易云音乐(赵雷)_第4张图片
但是现在我们需要的是赵雷的全部歌曲,怎么办?

经典部分:

先看代码:

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,得到所有的歌曲。
另外请注意:
python 爬取 网易云音乐(赵雷)_第5张图片
有个在这里插入图片描述
这说明嵌套了表单,我们首先需要定位到这个表单:

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()

结果图:
python 爬取 网易云音乐(赵雷)_第6张图片

你可能感兴趣的:(python)