用request库爬起豆瓣音乐top50并且获取到的数据写入csv表格中进行存储
时间: 2024-03-07 16:51:10 浏览: 19
好的,以下是实现的步骤:
1. 首先需要安装 requests 库,可以通过在终端/命令行中输入 `pip install requests` 来安装。
2. 导入 requests 和 csv 库:
```python
import requests
import csv
```
3. 然后使用 requests 库发送 GET 请求,获取豆瓣音乐 Top250 的页面源代码:
```python
url = 'https://music.douban.com/top250'
response = requests.get(url)
html = response.text
```
4. 接着,我们需要使用 BeautifulSoup 库来解析页面源代码。这里需要安装 BeautifulSoup 库,可以通过在终端/命令行中输入 `pip install beautifulsoup4` 来安装。然后导入库:
```python
from bs4 import BeautifulSoup
```
5. 使用 BeautifulSoup 解析页面源代码:
```python
soup = BeautifulSoup(html, 'html.parser')
```
6. 接下来,我们需要找到包含音乐信息的元素,使用 `soup.select()` 方法来找到这些元素。在豆瓣音乐 Top250 页面中,每个音乐信息都包含在一个 `<tr>` 元素中,所以我们可以使用以下代码找到所有的 `<tr>` 元素:
```python
music_list = soup.select('tr')
```
7. 然后,我们可以遍历 `music_list` 列表,提取每首歌曲的信息,并将这些信息存储到一个字典中:
```python
music_data_list = []
for music in music_list:
music_data = {}
cells = music.select('td')
if len(cells) > 0:
music_data['rank'] = cells[0].text.strip()
music_data['name'] = cells[1].select_one('a').text.strip()
music_data['artist'] = cells[2].text.strip()
music_data['year'] = cells[3].text.strip()
music_data_list.append(music_data)
```
8. 最后,我们可以使用 csv 库将数据写入到 csv 文件中:
```python
with open('douban_music_top250.csv', 'w', newline='') as csvfile:
fieldnames = ['rank', 'name', 'artist', 'year']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for music_data in music_data_list:
writer.writerow(music_data)
```
完整代码如下:
```python
import requests
import csv
from bs4 import BeautifulSoup
url = 'https://music.douban.com/top250'
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
music_list = soup.select('tr')
music_data_list = []
for music in music_list:
music_data = {}
cells = music.select('td')
if len(cells) > 0:
music_data['rank'] = cells[0].text.strip()
music_data['name'] = cells[1].select_one('a').text.strip()
music_data['artist'] = cells[2].text.strip()
music_data['year'] = cells[3].text.strip()
music_data_list.append(music_data)
with open('douban_music_top250.csv', 'w', newline='') as csvfile:
fieldnames = ['rank', 'name', 'artist', 'year']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for music_data in music_data_list:
writer.writerow(music_data)
```
这样就可以将豆瓣音乐 Top250 的数据爬取下来,并存储到一个 csv 文件中了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)