大家好,我是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()