用selenium和BeautifulSoup爬取网易云音乐歌手id

本人正在点亮爬虫技能树,写blog以记录

selenium和bs4介绍

Selenium 自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。换句话说叫 Selenium 支持这些浏览器驱动。

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

观察页面信息

我们爬取页面为网易云音乐的歌手界面,发现不同专栏的url对应的id参数不同,例如:

  • https://music.163.com/#/discover/artist/cat?id=1001 华语男歌手
  • https://music.163.com/#/discover/artist/cat?id=1002 华语女歌手

  • 在发现对应的每个专栏的A-Z索引对应的initial参数不同,例如:
  • https://music.163.com/#/discover/artist/cat?id=1001&initial=65 华语男歌手A索引
  • https://music.163.com/#/discover/artist/cat?id=100ini1&initial=66 华语男歌手B索引

  • 从A-Z对应initial参数65-90
    网易云音乐歌手栏
    通过更改url后面的id参数和initial参数获得不同页面
def main():
    url = 'https://music.163.com/#/discover/artist/cat?id='
    items = [1001,1002,1003,2001,2002,2003,4001,4002,4003,6001,6002,6003,7001,7002,7003]
    initials = [-1] + [i for i in range(
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是使用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、付费专栏及课程。

余额充值