python网络爬虫实战-mongodb数据库操作

大家好,我是python网络爬虫这门课程的主要讲师geo

MongoDB 与 NoSQL 在爬虫中的应用场景

在进阶教学中,可以引入 MongoDB 作为 NoSQL 数据库存储方案。它特别适合字段不固定、结构多变的数据类型,例如新闻内容、社群数据或 API 返回结果。

MongoDB 可以直接存储 Python 字典,几乎不需要事先定义结构,这对爬虫项目来说非常友好。

pip install pymongo

连接 MongoDB

from pymongo import MongoClient

# 默认连接本地 MongoDB,端口 27017
client = MongoClient("mongodb://localhost:27017/")

# 选择数据库(如果没有会自动创建)
db = client["mydatabase"]

# 选择集合(相当于 SQL 的表)
collection = db["users"]

| MongoDB 概念 | 类似于 SQL 中 | | ———- | —————- | | Database | 数据库 | | Collection | 表(table) | | Document | 行(row) / JSON 结构 | | Field | 列(column) | —

插入数据(Create)

user = {"name": "Alice", "age": 25}
collection.insert_one(user)  # 插入单笔

# 多笔插入
users = [{"name": "Bob", "age": 30}, {"name": "Charlie", "age": 35}]
collection.insert_many(users)

查询数据(Read)

查找一笔

user = collection.find_one({"name": "Alice"})
print(user)

查找多笔

for user in collection.find({"age": {"$gte": 30}}):
    print(user)

更新数据(Update)

更新一笔

collection.update_one(
    {"name": "Bob"},
    {"$set": {"age": 31}}  # 把 Bob 的年龄改为 31
)

更新多笔

collection.update_many(
    {"age": {"$gte": 30}},
    {"$inc": {"age": 1}}  # 年龄加 1 岁
)

删除数据(Delete)

删除一笔

collection.delete_one({"name": "Charlie"})

删除多笔

collection.delete_many({"age": {"$gte": 32}})

查看所有集合

print(db.list_collection_names())

查看所有数据库

print(client.list_database_names())

断开连接

client.close()