python爬虫爬取网易用户歌单名

python爬取网易云用户歌单

python爬取网易云用户歌单

因为网易云音乐无论是音乐下的评论还是用户最近一周听的歌还是用户收藏的歌单是放在内联框架里面,通过xpath是获取不了的,所以介绍下面代码!

直接上全部代码


from selenium import webdriver
import time
import xlwt
import sys
class Song_List():
def __init__(self):
    self.url='https://music.163.com/#/user/home?id=444755683'
    self.driver=webdriver.Chrome()
def paser(self):
    self.driver.get(self.url)
    # 切换到iframe框架
    frame=self.driver.find_element_by_xpath('//*[@id="g_iframe"]')
    self.driver.switch_to.frame(frame)
    data = []
    time.sleep(2)
    while True:
        info_list_01 = self.driver.find_elements_by_css_selector("[class='dec']")
        for each in info_list_01:  # 获取用户自己创建的歌单名以及听歌次数
            list_name = each.find_element_by_tag_name('a').text
            # 存储为字典
            item_01 = {
                list_name,
            }
            data.append(item_01)
        break
    return data
if __name__ == '__main__':
output = sys.stdout
outputfile = open("d:\song.xls", 'w',encoding='utf-8')
sys.stdout = outputfile
song_list=Song_List()
song_list.paser()
print(song_list.paser())
#    print("success")
outputfile.close()
sys.stdout = output

解析

parse()就是爬取函数
最后代码是直接把输出内容导入到外置xls文件中。

爬取最近一周歌曲和播放次数代码

info_list_01 = self.driver.find_elements_by_css_selector("[class='even']") info_list_02 = 		 self.driver.find_elements_by_css_selector("[class='u-cover u-cover-1']")
 #  print("-------------------最近一周播放-----------------------")
        for each in info_list_01:         #获取用户最近一周的歌单
            id=each.find_element_by_class_name('txt').text
            # 存储为字典
            item_01 ={
                id,
            }
 #   data.append(item_01,)
       #     print(item_01)
     #   print("-------------------用户歌单播放量-----------------------")
    #    for each in info_list_02:          #获取用户自己创建的歌单名以及听歌次数
     #       nb = each.find_element_by_class_name('nb').text
     #       # 存储为字典
     #       item_02 = {
     #           'nb': nb,
      #      }
        #    data.append(item_02,)
      #      print(item_02)
     #   print("-------------------用户歌单-----------------------")

待完善部分

1、输出的xls文件内容,每次输出会覆盖
2、没有写对一批次用户的查询操作

你可能感兴趣的:(爬虫)