Python爬虫

Python爬虫 知识量:11 - 28 - 71

4.3 存储至MongoDB数据库><

MongoDB的基本概念- 4.3.1 -

MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。它旨在为WEB应用提供可扩展的高性能数据存储解决方案。以下是MongoDB的一些基本概念:

  • 数据结构:MongoDB的数据结构是非关系型的,采用类似JSON的BSON(Binary JSON)格式存储数据。这意味着数据之间没有严格的表结构限制,可以灵活地存储复杂的数据类型。

  • 文档:在MongoDB中,文档是数据的基本单元,类似于关系型数据库中的行。每个文档都是一个键值对的集合,其中键是字符串类型,值可以是各种数据类型,如字符串、数字、布尔值、日期、数组等。

  • 集合:多个文档组成一个集合,类似于关系型数据库中的表。集合没有固定的模式,可以存储不同格式和结构的文档。

  • 数据库:多个集合组成一个数据库,每个数据库都有自己的名称和存储空间。一个MongoDB实例可以容纳多个独立的数据库。

  • 查询语言:MongoDB的查询语言非常强大和灵活,支持类似面向对象的查询语法。它允许用户执行各种复杂的查询操作,如条件查询、聚合、排序等。

  • 索引:MongoDB支持对集合中的字段建立索引,以提高查询速度。索引类似于关系型数据库中的索引,可以创建单字段索引或多字段复合索引。

  • 分片:为了实现数据的水平扩展,MongoDB支持将集合分片存储在多个服务器上。分片可以将数据分布到不同的物理节点上,从而提高系统的整体性能和可伸缩性。

  • 复制集:MongoDB的复制集是一种数据冗余和故障恢复机制,通过在多个服务器上复制数据来保证数据的可靠性和可用性。复制集可以提供读取副本和高可用性的功能。

Python操作MongoDB数据库- 4.3.2 -

Python提供了多种库来操作MongoDB数据库,其中最常用的是PyMongo。以下是一个简单的示例,演示如何使用PyMongo在Python中连接到MongoDB数据库并执行一些基本操作:

首先,确保已经安装了PyMongo库。如果尚未安装,可以使用以下命令进行安装:

pip install pymongo

接下来,可以使用以下代码连接到MongoDB数据库并执行一些基本操作:

from pymongo import MongoClient  
  
# 连接到MongoDB数据库  
client = MongoClient('localhost', 27017)  
  
# 选择数据库(如果数据库不存在,将会自动创建)  
db = client['mydatabase']  
  
# 选择集合(如果集合不存在,将会自动创建)  
collection = db['mycollection']  
  
# 插入文档  
document = {"name": "John", "age": 30, "city": "New York"}  
collection.insert_one(document)  
  
# 查询文档  
result = collection.find_one({"name": "John"})  
print(result)  
  
# 更新文档  
collection.update_one({"name": "John"}, {"$set": {"age": 31}})  
result = collection.find_one({"name": "John"})  
print(result)  
  
# 删除文档  
collection.delete_one({"name": "John"})

在上述示例中,首先使用MongoClient连接到本地MongoDB服务器。然后,选择要操作的数据库和集合。接下来,执行了一些基本操作,包括插入文档、查询文档、更新文档和删除文档。

把数据存储至MongoDB数据库- 4.3.3 -

以下是一个简单的示例代码,演示如何将爬取的数据存储到MongoDB数据库中:

from pymongo import MongoClient  
from bs4 import BeautifulSoup  
  
# 爬取网页数据  
response = requests.get('http://example.com')  
soup = BeautifulSoup(response.text, 'html.parser')  
data = soup.find_all('div', class_='data')  
  
# 连接到MongoDB数据库  
client = MongoClient('localhost', 27017)  
db = client['mydatabase']  
collection = db['mycollection']  
  
# 遍历爬取的数据,将数据插入到MongoDB数据库中  
for item in data:  
    name = item.find('div', class_='name').text  
    age = item.find('div', class_='age').text  
    city = item.find('div', class_='city').text  
      
    # 将数据插入到MongoDB数据库中  
    document = {"name": name, "age": age, "city": city}  
    collection.insert_one(document)

在上述示例中,首先使用requests库爬取网页数据,并使用BeautifulSoup解析网页。然后,使用PyMongo连接到MongoDB数据库。接下来,遍历爬取的数据,提取所需的信息,并构建一个文档对象。最后,使用insert_one()方法将文档插入到MongoDB数据库中。