读取douban_books.html文件,提取书籍如下信息:标题,作者,出版年份,出版社;并将其打印出来。(计6分) 使用sqlite3数据库工具,创建数据库book.db,在数据库中创建表格book。(计4分) 将提取出来的书籍信息,存入数据库表格book中,并将书籍信息打印出来。(计5分)
时间: 2024-03-14 12:44:26 浏览: 30
好的,以下是一个简单的 Python 程序,可以实现您的需求。请确保已经安装了 `beautifulsoup4` 和 `sqlite3` 库。
1. 提取书籍信息
```python
from bs4 import BeautifulSoup
import sqlite3
# 读取 HTML 文件
with open('douban_books.html', 'r', encoding='utf-8') as f:
html_content = f.read()
# 解析 HTML 文件
soup = BeautifulSoup(html_content, 'html.parser')
# 提取书籍信息
books = []
for book in soup.select('li.subject-item'):
title = book.select_one('h2 > a')['title']
author = book.select_one('div.pub').get_text().split('/')[0].strip()
pub_year = book.select_one('div.pub').get_text().split('/')[-2].strip()
publisher = book.select_one('div.pub').get_text().split('/')[-1].strip()
books.append((title, author, pub_year, publisher))
# 打印书籍信息
for book in books:
print(f'标题:{book[0]}')
print(f'作者:{book[1]}')
print(f'出版年份:{book[2]}')
print(f'出版社:{book[3]}\n')
```
2. 创建数据库表格
```python
conn = sqlite3.connect('book.db')
c = conn.cursor()
c.execute('''CREATE TABLE book
(id INTEGER PRIMARY KEY,
title TEXT,
author TEXT,
pub_year TEXT,
publisher TEXT)''')
conn.commit()
conn.close()
```
在这个程序中,我们使用 `sqlite3` 库连接到 `book.db` 数据库,并创建了一个名为 `book` 的表格。表格包含四个字段,分别是 ID、标题、作者、出版年份和出版社。
3. 存储书籍信息到数据库
```python
# 存储书籍信息到数据库
conn = sqlite3.connect('book.db')
c = conn.cursor()
for book in books:
c.execute(f"INSERT INTO book (title, author, pub_year, publisher) VALUES ('{book[0]}', '{book[1]}', '{book[2]}', '{book[3]}')")
conn.commit()
conn.close()
```
在这个程序中,我们使用 `execute` 函数向 `book` 表格中插入数据,将提取出来的书籍信息存储到数据库中。
4. 打印存储在数据库中的书籍信息
```python
# 从数据库中获取书籍信息
conn = sqlite3.connect('book.db')
c = conn.cursor()
c.execute("SELECT * FROM book")
books = c.fetchall()
# 打印书籍信息
for book in books:
print(f'标题:{book[1]}')
print(f'作者:{book[2]}')
print(f'出版年份:{book[3]}')
print(f'出版社:{book[4]}\n')
conn.close()
```
在这个程序中,我们使用 `execute` 函数从 `book` 表格中查询数据,并将结果打印出来。注意,我们查询到的书籍信息包含 ID 字段,因此在打印时需要排除这个字段。
相关推荐
![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)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)