(三)爬取网易云音乐排行榜信息,保存到csv文件中; 采用selenium爬取并解析网页内容,然后将结果保存在csv中输出。
时间: 2024-09-22 09:07:42 浏览: 193
好的,要在Python中使用Selenium爬虫获取网易云音乐排行榜的信息并将其保存到CSV文件中,你需要按照以下步骤操作:
1. **安装必要的库**:
首先,确保已安装了`selenium`, `webdriver_manager`(用于下载浏览器驱动),以及`pandas`处理数据和`csv`进行文件操作。可以使用pip命令安装:
```
pip install selenium webdriver_manager pandas
```
2. **准备浏览器驱动**:
Selenium需要一个实际的浏览器驱动才能控制浏览器。针对Chrome浏览器,你可以从官网下载对应的驱动(如:chromedriver),放到系统路径下,或者通过`webdriver_manager`自动管理。
3. **编写爬虫脚本**:
```python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import time
import pandas as pd
def fetch_music_rankings():
# 创建Chrome浏览器实例
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
url = "https://music.163.com/rank"
driver.get(url) # 访问排行榜页面
# 等待页面加载完成
time.sleep(5)
# 解析HTML内容
soup = BeautifulSoup(driver.page_source, 'lxml')
rankings = soup.find_all('div', class_='hot-song') # 查找歌曲列表元素
data = []
for rank in rankings:
title = rank.find('a', class_='title').text
artist = rank.find('span', class_='artist').text
link = rank.find('a')['href']
data.append([title, artist, link])
# 关闭浏览器
driver.quit()
# 将数据转换为DataFrame并保存为CSV
df = pd.DataFrame(data, columns=['标题', '艺人', '链接'])
df.to_csv('网易云音乐排行榜.csv', index=False)
# 调用函数开始抓取
fetch_music_rankings()
```
4. **运行脚本**:
执行上述代码后,它会打开Chrome浏览器访问网易云音乐排行榜页面,抓取数据,并将结果保存到名为"网易云音乐排行榜.csv"的文件中。
注意:在实际操作时,网站可能会有反爬策略,频繁请求可能会导致IP被封禁,因此在爬取时需要添加适当的延时和随机化。
阅读全文