12《Python 原生爬虫教程》MongoDB 数据库的简单使用和配置

这节课我们主要是学习 MongoDB 数据库的基本操作和使用,爬虫在爬取到数据之后可以把数据需要把数据保留下来供其他工作人员去使用。如果数据量不是很大的话可以保存在文件中,但是如果数据量很大那么保存在文件中就非常困难,先不说存储完数据之后的文件大小非常大,很占空间,单就是往文件中写入数据的速度就很慢。

但是幸好我们还有另外一个选择,那就是将爬取到的数据存入数据库中。因为现在 JSON 数据格式的流行,我们一般都会选择 JSON 来作为数据的传输格式,所以非常适合 JSON 数据存储的 MongoDB 数据库就获得了我们爬虫程序员的青睐,所以这节课我们就来学习下 MongoDB 的:

  • MongoDB 基本概念;
  • MongogDB 主要特点;
  • MongoDB 常见操作;
  • Python 操作 MongoDB。

通过本节课的学习你会掌握

  • MongoDB 基本操作,能够操作创建数据库,并且进行简单的 CURD 功能。
  • 使用 Python 进行数据库的 CURD.

1. MongoDB 简介

MongoDB 是一个文档型数据库,由 C++ 编写,功能丰富,支持复杂的数据类型,支持数据建立索引,性能高,容易使用,方便部署。

主要特点如下:

  1. 面向集合存储,方便存储对象类型的数据;
  2. 支持语言丰富,Python,Java,C++ 等语言;
  3. 支持完全索引;
  4. 文件存储等格式为 JSON。

传统的关系型数据库以 MySQL 为例,一般是由数据库,表,记录三个层次组成,MongoDB 是由数据库,集合,文档对象组成。下表列出了 MongoDB 与 MySQL 的对比:

MySQL MongoDB 描述
database database 数据库
table collection 数据库表 / 集合
row document 数据库行 / 文档
column field 数据字段列 / 域
index index 索引
index index 索引

2. MongoDB 数据库的安装

MongoDB 的安装方式读者可以自行去查找,这里就不再赘述了。通过以下方式测试数据库是否安装运行成功:打开浏览器,输入如下网址,成功后,会返回如下结果

5e8d32b509978a6809500242.png

下面我们来看下 MongoDB 的基本操作。

2.1 显示所有数据库

要查看本地所有的数据库需要运行下面的命令:

show dbs

效果展示:

5e8d32c409798d0115161010.png

2.3 创建一个集合

要查看本地所有的数据库需要运行下面的命令:

db.createCollection("test")

效果展示:

5e8d32d9091ab60118990094.jpg

2.4 往集合添加一条数据

要查看本地所有的数据库需要运行下面的命令:

db.test.insert({"name":"python", "version":3})
db.test.insert({"name":"java","version":1.8})
代码块12

效果展示:

5e8d32ea09bc1d0a19030077.jpg
5e8d32f109e6300f19040087.jpg

2.5 查询集合添加的数据

要查看本地所有的数据库需要运行下面的命令:

db.test.find()

效果展示:

5e8d32fb099f93b618940110.jpg

2.6 更改集合里的数据

要查看本地所有的数据库需要运行下面的命令:

 db.test.update({"_id": ObjectId("5e6b448452df331867ae1a9f")},{$set:{"version":2}})

效果展示:

5e8d33040986e85918990085.jpg

2.7 删除集合里的数据

要查看本地所有的数据库需要运行下面的命令:

 db.test.deleteOne({"name":"java"})

效果展示:

5e8d330d09e6f02b19000182.jpg

3. 使用 pymongo 操作 MongoDB 数据库

第二部分中我们讲述了如何操作 MongoDB 数据库,但是在爬虫开发中我们没办法使用命令来操作 MongoDB 数据库。我们就要使用 Python 语言来操作 MongoDB 数据库,那么如何使用 Python 来操作数据库呢?
这个时候我们就需要使用 pymongo 包了。通过这个第三方的包,我们才可以通过 Python 语言来控制 MongoDB 的操作。

首先安装 pymongo 包:

pip install pymongo

效果展示:

5e8d331709a4b32919010372.png

3.1 连接数据库,创建数据库和集合

在 pymongo 安装完成之后,我们接下来通过 Python 来连接本地和远程的 MongoDB 数据库。

from pymongo import MongoClient
#建立连接
client = MongoClient('mongodb://localhost:27017/')
#创建数据库new_db_for_py
db = client['new_db_for_py']
#创建集合new_data_set
collection = db.new_data_set

效果如下:


5e8d332209bbece418990148.jpg

3.2 插入数据

插入两组数据,分别为 Tony 和 Jack:

 data = {"name":"Tony", "age":18, "gender":"male"}

 data = {"name":"Jack", "age":30, "gender":"male"}

效果如下:


5e8d332c099c107e19010237.png

3.3 查询数据

寻找名字为 Tony 的数据:

 collection.find_one({"name":"Tony"})

效果如下:

5e8d3334096c181619030133.png

3.4 更改数据

Tony = collection.find_one(condition)
Tony['age'] = 55
collection.update(condition, Tony)

效果如下:

5e8d333d092efbe918940285.png

3.5 删除数据

 collection.remove({"name":"Tony"})

效果如下:

5e8d33460997a1ab19020073.jpg

再次查询 Tony,效果如下:

5e8d334e09a3b5b119010087.jpg

查询为空,说明 Tony 的数据删除成功!

4. 小结

这一小节,我们学会了 MongoDB 的基本操作,以及在 Python 中的使用。

如果文件不是很大,持久化存储可以使用 TXT 或者 CSV 格式,写入和读取都比较方便。但是,当数据量很大的时候,而且需要存储 JSON 等格式的时候,推荐使用 MongoDB 进行持久化的存储。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359

推荐阅读更多精彩内容