以上面代码为基础,将数据写入csv
时间: 2024-04-11 16:32:38 浏览: 159
要将数据写入CSV文件,你可以使用Python的csv模块。在循环内部,你可以将每本书的信息存储在一个字典中,然后将该字典写入CSV文件中。以下是修改后的代码:
```python
import csv
import requests
from bs4 import BeautifulSoup
# 发起HTTP请求获取页面内容
url = 'https://book.douban.com/top250'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 创建CSV文件并写入表头
csv_file = open('douban_books.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(csv_file)
writer.writerow(['封面', '书名', 'ISBN', '作者', '出版社', '评分', '简介'])
# 找到图书列表
book_list = soup.find('div', class_='article').find_all('tr', class_='item')
# 遍历图书列表获取每本书的信息
for book in book_list:
# 获取封面图片链接
cover_img = book.find('a', class_='nbg').find('img')['src']
# 获取书名
title = book.find('div', class_='pl2').find('a')['title']
# 获取书籍详情链接
detail_url = book.find('div', class_='pl2').find('a')['href']
# 发起HTTP请求获取详情页面内容
detail_response = requests.get(detail_url)
detail_soup = BeautifulSoup(detail_response.text, 'html.parser')
# 获取ISBN书号、作者、出版社等信息
info = detail_soup.find('div', id='info').get_text(strip=True, separator='\n')
isbn = info.split('\n')[1].split(':')[-1].strip()
author = info.split('\n')[2].split(':')[-1].strip()
publisher = info.split('\n')[3].split(':')[-1].strip()
# 获取评分
rating = book.find('span', class_='rating_nums').get_text().strip()
# 获取简介
summary = detail_soup.find('div', class_='intro').get_text(strip=True, separator=' ')
# 写入CSV文件
writer.writerow([cover_img, title, isbn, author, publisher, rating, summary])
# 关闭CSV文件
csv_file.close()
```
这段代码在循环内部使用`csv.writer`将每本书的信息写入CSV文件中。在文件开头,我们创建了一个CSV文件,并写入了表头。然后,在循环内部,我们使用`writer.writerow`将每本书的信息写入一行。最后,我们在循环结束后关闭CSV文件。
请确保在运行代码之前,你已经安装了Python的csv模块,并且指定了正确的CSV文件路径。
阅读全文