使用函数爬取蔚蓝书店上的数据,采集的内容有图书封面、书名、ISBN、作者、价格、出版日期、出版社等,要求有数据爬取、存储、展示过程,数据存储在MongoDB中,每个模块都使用函数实现
时间: 2024-06-09 12:06:59 浏览: 24
好的,这个任务可以分为三个主要模块:数据爬取、数据存储、数据展示。下面我来分别介绍如何使用函数实现这些模块。
## 数据爬取模块
我们可以使用 Python 的 requests 库和 BeautifulSoup 库来实现数据爬取。具体步骤如下:
1. 导入 requests 和 BeautifulSoup 库
```python
import requests
from bs4 import BeautifulSoup
```
2. 定义函数 `get_book_info(url)`,该函数用于获取指定网页的图书信息。其中 `url` 参数为要爬取的网页链接。
```python
def get_book_info(url):
# 发送 GET 请求获取网页内容
response = requests.get(url)
# 解析网页内容
soup = BeautifulSoup(response.content, 'html.parser')
# 获取图书信息
book_info = {}
book_info['title'] = soup.find('h1', class_='title').text.strip()
book_info['isbn'] = soup.find('div', class_='book-info').find('span', class_='isbn').text.strip()
book_info['author'] = soup.find('div', class_='book-info').find('span', class_='author').text.strip()
book_info['price'] = soup.find('div', class_='book-info').find('span', class_='price').text.strip()
book_info['publisher'] = soup.find('div', class_='book-info').find('span', class_='publisher').text.strip()
book_info['pubdate'] = soup.find('div', class_='book-info').find('span', class_='pubdate').text.strip()
book_info['cover'] = soup.find('div', class_='book-cover').find('img')['src']
return book_info
```
3. 调用 `get_book_info(url)` 函数获取指定网页的图书信息。如下所示:
```python
url = 'https://www.weilan.com/book/1087'
book_info = get_book_info(url)
print(book_info)
```
## 数据存储模块
我们可以使用 Python 的 pymongo 库来实现数据存储。具体步骤如下:
1. 导入 pymongo 库
```python
from pymongo import MongoClient
```
2. 定义函数 `save_book_info(book_info)`,该函数用于将图书信息保存到 MongoDB 数据库中。其中 `book_info` 参数为要保存的图书信息。
```python
def save_book_info(book_info):
# 连接 MongoDB 数据库
client = MongoClient('mongodb://localhost:27017')
# 获取指定的数据库和集合
db = client['bookstore']
collection = db['books']
# 插入图书信息到集合中
collection.insert_one(book_info)
```
3. 调用 `save_book_info(book_info)` 函数将图书信息保存到 MongoDB 数据库中。如下所示:
```python
save_book_info(book_info)
```
## 数据展示模块
我们可以使用 Python 的 pymongo 库和 Flask 库来实现数据展示。具体步骤如下:
1. 导入 Flask 和 pymongo 库
```python
from flask import Flask, render_template
from pymongo import MongoClient
```
2. 定义 Flask 应用程序和路由函数。其中路由 `/books` 用于展示 MongoDB 数据库中的所有图书信息。
```python
app = Flask(__name__)
@app.route('/books')
def show_books():
# 连接 MongoDB 数据库
client = MongoClient('mongodb://localhost:27017')
# 获取指定的数据库和集合
db = client['bookstore']
collection = db['books']
# 获取所有图书信息
books = collection.find()
# 渲染模板并返回HTML页面
return render_template('books.html', books=books)
```
3. 创建模板文件 `books.html`,该模板用于展示 MongoDB 数据库中的所有图书信息。
```html
<!DOCTYPE html>
<html>
<head>
<title>图书信息</title>
</head>
<body>
<table>
<tr>
<th>封面</th>
<th>书名</th>
<th>ISBN</th>
<th>作者</th>
<th>价格</th>
<th>出版日期</th>
<th>出版社</th>
</tr>
{% for book in books %}
<tr>
<td><img src="{{ book.cover }}" alt="{{ book.title }}"></td>
<td>{{ book.title }}</td>
<td>{{ book.isbn }}</td>
<td>{{ book.author }}</td>
<td>{{ book.price }}</td>
<td>{{ book.pubdate }}</td>
<td>{{ book.publisher }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
```
4. 运行 Flask 应用程序,访问路由 `/books` 即可展示 MongoDB 数据库中的所有图书信息。如下所示:
```python
if __name__ == '__main__':
app.run(debug=True)
```
到此为止,我们已经完成了数据爬取、数据存储、数据展示三个模块的函数实现。完整代码如下所示: