使用函数爬取蔚蓝书店上的数据,采集的内容有图书封面、书名、ISBN、作者、价格、出版日期、出版社等,要求有数据爬取、存储、展示过程,数据存储在MongoDB中
时间: 2023-12-28 19:17:57 浏览: 96
好的,首先我们需要安装 pymongo 库用于连接 MongoDB 数据库。可以使用以下命令进行安装:
```
pip install pymongo
```
接下来,我们需要确定需要爬取的网页。在这里,我们要爬取的是蔚蓝书店的图书页面,例如:
```
https://www.bluebook.net.cn/detail/9787302483526
```
其中,9787302483526 是书籍的 ISBN 编号。
接下来,我们需要编写代码来实现爬取、存储和展示数据的过程。以下是一个示例程序:
```python
import requests
from bs4 import BeautifulSoup
import pymongo
def get_book_info(isbn):
# 构造 URL
url = f'https://www.bluebook.net.cn/detail/{isbn}'
# 发送请求
response = requests.get(url)
# 解析 HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 提取图书信息
info = {}
# 封面
cover = soup.find('div', class_='book-cover').find('img')['src']
info['cover'] = cover
# 书名
title = soup.find('h1', class_='book-title').text.strip()
info['title'] = title
# ISBN
info['isbn'] = isbn
# 作者
author = soup.find('span', class_='author').text.strip()
info['author'] = author
# 价格
price = soup.find('span', class_='price').text.strip()
info['price'] = price
# 出版日期
pub_date = soup.find('span', class_='pub-date').text.strip()
info['pub_date'] = pub_date
# 出版社
publisher = soup.find('span', class_='publisher').text.strip()
info['publisher'] = publisher
return info
if __name__ == '__main__':
# 连接 MongoDB
client = pymongo.MongoClient('localhost', 27017)
db = client['bookstore']
collection = db['books']
# 爬取数据并存储到 MongoDB
isbn = '9787302483526'
book_info = get_book_info(isbn)
collection.insert_one(book_info)
# 展示存储的数据
for book in collection.find():
print(book)
```
在上面的程序中,我们首先定义了一个 get_book_info 函数,用于从蔚蓝书店上爬取图书信息。在函数中,我们使用 requests 库发送 HTTP 请求,并使用 BeautifulSoup 库解析 HTML 页面。然后,我们从页面中提取出需要的信息,并返回一个字典,包含图书的封面、书名、ISBN、作者、价格、出版日期和出版社等信息。
接下来,我们使用 pymongo 库连接 MongoDB 数据库,并将爬取到的数据存储到 books 集合中。最后,我们展示存储的数据,遍历 books 集合,并打印出每个图书的信息。
运行程序后,我们可以在控制台上看到存储的数据。如果需要查看数据库中的数据,可以使用 MongoDB 的客户端工具,如 Robo 3T。
阅读全文