【爬虫】使用selenium爬取网易云音乐热评

网易云音乐热歌榜单热评

使用selenium爬取网易云音乐热歌榜的基础上深度爬取网易云音乐热歌榜热评
在这里插入图片描述

在爬取到热歌榜单的歌曲url后深度爬取歌曲所有的评论数据,通过F12可以发现所有的评论数据在同一个div标签内,而对于热评来说只需要爬取前十五条数据即可,同时要注意页面中嵌套了frame在爬取时需要使用switch_to.frame()方法来切换页面frame以防定位不到元素。

tps://img-blog.csdnimg.cn/direct/f4d5facfc5bc4de78bfe6adbff878fee.png)

完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By

# Edge驱动
driver = webdriver.Edge()

# 访问网易云音乐热歌榜
print("访问网易云音乐中..")
driver.get("https://music.163.com/#/discover/toplist?id=3778678")
driver
好的,以下是使用Selenium爬取网易云音乐评论的步骤: 1. 安装Selenium和Chrome浏览器驱动。 ```python !pip install selenium ``` Chrome浏览器驱动下载地址:http://chromedriver.chromium.org/downloads 2. 导入必要的库和设置浏览器驱动路径。 ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # 设置浏览器驱动路径 driver_path = 'chromedriver的路径' ``` 3. 打开网易云音乐网站并搜索指定的歌曲。 ```python # 打开网易云音乐网站 driver = webdriver.Chrome(executable_path=driver_path) driver.get('https://music.163.com/') # 切换到iframe中 driver.switch_to.frame("contentFrame") # 搜索指定的歌曲 search = driver.find_element_by_xpath('//*[@id="m-search-input"]') search.send_keys('告白气球') search.send_keys(Keys.RETURN) # 等待页面加载完成 time.sleep(3) ``` 4. 打开歌曲的评论页面并切换到最新评论。 ```python # 打开歌曲详情页 song_link = driver.find_element_by_xpath('//*[@id="song-0"]/div[2]/div/div[1]/div[1]/a') song_link.click() # 点击展开评论 comment_button = driver.find_element_by_xpath('//*[@id="cnt_comment_count"]') comment_button.click() # 切换到最新评论 comment_tab = driver.find_element_by_xpath('//*[@id="comment-box"]/div[1]/div[1]/ul/li[2]/a') comment_tab.click() # 等待页面加载完成 time.sleep(3) ``` 5. 模拟滚动鼠标操作,加载更多评论。 ```python # 模拟滚动鼠标操作,加载更多评论 for i in range(10): driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') time.sleep(2) ``` 6. 获取所有评论的用户名和内容。 ```python # 获取所有评论的用户名和内容 comment_list = driver.find_elements_by_xpath('//*[@id="comment-box"]/div[1]/div[3]/div') for comment in comment_list: username = comment.find_element_by_xpath('./div[2]/a').text content = comment.find_element_by_xpath('./div[1]/div[1]').text print(username, content) ``` 7. 关闭浏览器。 ```python # 关闭浏览器 driver.quit() ``` 完整代码如下: ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # 设置浏览器驱动路径 driver_path = 'chromedriver的路径' # 打开网易云音乐网站 driver = webdriver.Chrome(executable_path=driver_path) driver.get('https://music.163.com/') # 切换到iframe中 driver.switch_to.frame("contentFrame") # 搜索指定的歌曲 search = driver.find_element_by_xpath('//*[@id="m-search-input"]') search.send_keys('告白气球') search.send_keys(Keys.RETURN) # 等待页面加载完成 time.sleep(3) # 打开歌曲详情页 song_link = driver.find_element_by_xpath('//*[@id="song-0"]/div[2]/div/div[1]/div[1]/a') song_link.click() # 点击展开评论 comment_button = driver.find_element_by_xpath('//*[@id="cnt_comment_count"]') comment_button.click() # 切换到最新评论 comment_tab = driver.find_element_by_xpath('//*[@id="comment-box"]/div[1]/div[1]/ul/li[2]/a') comment_tab.click() # 等待页面加载完成 time.sleep(3) # 模拟滚动鼠标操作,加载更多评论 for i in range(10): driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') time.sleep(2) # 获取所有评论的用户名和内容 comment_list = driver.find_elements_by_xpath('//*[@id="comment-box"]/div[1]/div[3]/div') for comment in comment_list: username = comment.find_element_by_xpath('./div[2]/a').text content = comment.find_element_by_xpath('./div[1]/div[1]').text print(username, content) # 关闭浏览器 driver.quit() ``` 注意:爬虫行为容易引起网站的反爬虫机制,使用时请注意合理使用,避免对网站造成影响。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值