python 爬虫(十二)MongoDB详解(安装 + 介绍 + MongoDB库和集合的介绍(相关命令:创建 + 删除)) + 爬虫中分页的两种方法

注意:
爬取网站的流程:

  1. 确定网站哪个url是数据的来源。
  2. 简要分析一下网站结构,查看数据一般放在哪里。
  3. 发送请求requests,查看response.text里面是否有我们想要的数据内容。
  4. 如果有数据,就用相应的提取数据的方法提取数据保存。
  5. 如果没有,我们就可以通过以下两种方法来实现爬取:
    (1)分析数据来源,查看是否通过一些接口获取到的页面数据。(首推)
    如果没有在页面中返回数据,我们应该首先想到,数据有可能是从ajax接口中获取的。
    分析接口的步骤:
    1.查看该接口返回的数据是否使我们想要的。
    2.重点查看该接口的请求参数。
    了解哪些请求参数是变化的以及他的变化规律。
    (2)selenium+phantomjs来获取页面内容。
  6. 查看是否有分页,解决分页的问题。

一、分页的两种方法


(1)for循环

for i in range(1,20):
		response = requests.get(url %i)

注意:这种方法只能用你知道最大页的前提下。

(2)while True循环

	i =0 #初始页码
	while True:
		# print(2)
		json_str = get_conent(url.format(type_,i) ,headers =headers )
		print(json_str)
		#必须要制定跳出循环的边界。
		if  json_str =='[]':
			# print(1)
			break
		json_data = json.loads(json_str)
		parse_json(json_data)

		i+=20

注意:这种情况是用在返回json数据的前提下,具体问题具体分析


二、mongo安装



1. 路径


注意:最重要的是指定路径custom;路径中不能包含中文和空格
修改为C:\MongoDB\Server\3.4 方便操作


2. 环境变量


将下面的路径配置到path中

C:\MongoDB\Server\3.4\bin

在这里插入图片描述


3. 验证



打开cmd,输出mongod

安装后cmd命令行输入mongod出现如下结果就代表安装成功
在这里插入图片描述


4. 新建一个存放数据库的文件夹


C:\MongoDB\Server\3.4\data\db

在这里插入图片描述
再新建db
在这里插入图片描述


5. 启动mongo



注意:mongod启动的是服务器

mongod --dbpath C:\MongoDB\Server\3.4\data\db

启动成功:
在这里插入图片描述


三、将mongo配置成一个服务


注意:MongoDB默认端口号27017


1. 创建logs文件夹


路径:C:\MongoDB\Server\3.4\data\logs在这里插入图片描述


2. 以管理员方式开启cmd


在这里插入图片描述


3. 进入mongodb的bin文件夹下


在这里插入图片描述


4. 运行命令


mongod --bind_ip 0.0.0.0 --logpath C:\MongoDB\Server\3.4\data\logs\mango.log --logappend --dbpath C:\MongoDB\Server\3.4\data\db --port 27017 --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

4. 服务中启动MongoDB


首次启动服务

计算机右击选择管理,找到服务,输入m回车,找到MongoDB,启动服务
在这里插入图片描述


四、MongoDB启动客户端和服务器命令


mongod ------------启动mongo服务器。

mongod --dbpath 数据存放的文件夹

mongo---------启动一个客户端。客户端是用来做增上改查这些操作的。


五、MongoDB简介


在这里插入图片描述
非关系型数据库的出现
在这里插入图片描述
nosql提高网站性能
在这里插入图片描述
MongoDB保存的是最常用的数据

MongoDB数据存在硬盘(不常用)

redis数据存在内存(最常用)

mysql关系型数据库(最不常用的数据)

缓存在web下是最常用的


1. 、mongodb 文档数据库


存储的是文档(Bson->json的二进制化).
如:{name:'zhangsan',age:'9'}

特点 : 内部执行引擎为JS解释器, 把文档存储成bson结构,在查询时,转换为JS对象,并可以通过熟悉的js语法来操作.


2. mongo和传统型数据库的不同


  • 传统型数据库: 结构化数据, 定好了表结构后,每一行的内容,必是符合表结构的,就是说–列的个数,类型都一样.
  • mongo文档型数据库: 表下的每篇文档,都可以有自己独特的结构(json对象都可以有自己独特的属性和值)
  • mongo数据库和collection不用提前创建。(可以隐式创建。)

简单来说mongo数据库表结构不固定,一个文档(类似于表)你可以写入任意的字段,无约束(没有固定的结构)。库和表可以隐性创建:在你没有真正创建库和表,能写入数据。

没有固定的结构,如:

{name:"张三",age:19,sex:"男"}
而另一个文档可以这样写:
{name:"李四"}
没有固定的结构

3. mongodb数据库bin目录下的文件意义


在这里插入图片描述

文件 意义
bsondump.exe 导出bsondump结构
mongo.exe 客户端
mongod.exe 服务端
mongodump.exe 整体数据库导出(备份工具)
mongoexport.exe 导出易识别的json文档
mongofiles.exe GridFS工具,内建的分布式文件系统
mongoimport.exe 数据导入程序
mongorestore.exe 数据恢复工具
mongos.exe 路由器(分片时使用)
mongostat.exe 监视程序


4. mongodb中对数据库的描述及相关命令


  • 一个mongodb中可以建立多个数据库。

  • MongoDB的默认数据库为"db",该数据库存储在data目录中。

  • MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

  • "show dbs" 命令可以显示所有数据的列表。
    在这里插入图片描述

  • 执行 “db” 命令可以显示当前数据库对象或集合。
    在这里插入图片描述

  • 运行"use"命令,可以连接到一个指定的数据库。
    在这里插入图片描述



5. MongoDB数据库的命名规则


  • 不能是空字符串("")
  • 不得含有’ '(空格)、.、$、/、\和\0 (空字符)
  • 应全部小写
  • 最多64字节

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

  • admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
  • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

6. 文档


文档是一组 键值(key-value)对(即 BSON)。 MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。(没有固定的结构)
示例:

{,"name":"张三",age:"19"}

关系数据库管理系统 RDBMS(Relational Database Management System)与 MongoDB 对应的术语:
在这里插入图片描述
需要注意的是:

  1. 文档中的键/值对是有序的。
  2. 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
  3. MongoDB区分类型和大小写。
  4. MongoDB的文档不能有重复的键。
  5. 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。(我们在插入数据没加""时,在查找出来会自动给我们加上引号,因为键本身是字符串

7. 文档键命名规范


  • 键不能含有\0 (空字符)。这个字符用来表示键的结尾。
  • .和$有特别的意义,只有在特定环境下才能使用。
  • 以下划线"_"开头的键是保留的(不是严格要求的)。

8. 集合(文档组)


集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

{"name":"张三"}
{"name":"李四","age":10}
{"name":"王五","age":5,"sex":"男"}

注意:当第一个文档插入时,集合就会被创建。


10. 集合名规则


  • 集合名不能是空字符串""。
  • 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
  • 集合名不能以"system."开头,这是为系统集合保留的前缀。
  • 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

11. MongoDB 数据类型


在这里插入图片描述


六、MongoDB创建库和文档以及他们的删除


1. 库的创建


(1)创建库的第一种方法


Mongodb的库是隐式创建,你可以use 一个不存在的库,然后在该库下创建collection,即可创建库

  • 第一步use 库名(隐性创库)
  • 第二步db.createCollection(‘集合名’)(在该库下面创建集合,就可以创建一个数据库)在这里插入图片描述
    注意:这种方法在创建库的同时也创建了一个集合。

(2)创建库的第二种方法


  • 第一步:use 库名
  • 第二步:db.collectionName(集合名).insert(document(文档))在这里插入图片描述在这里插入图片描述

注意:这种方法不仅隐性创建了库,同时也隐性创建了集合collection;并且集合中也插入了数据即文档


2. 集合的创建


(1)库不存在的时候创建

  • use 库名
  • db.createCollection('collectionName(集合名)')在这里插入图片描述
    (2)库存在的时候
    步骤同上,也是先进库不同的是上面的方法也创建了库
  • use 库名
  • db.createCollection('collectionName(集合名)')在这里插入图片描述
    (3)直接插入数据顺带创建集合
  • use 库名
  • db.stu(集合名).insert({"name":"张三"})
    这一方法即说明了在MongoDB中,collection也是可以隐身创建的

3. 删除数据库和集合


  • 删除数据库(必须进入库)
use 库名
db.dropDatabase()//删除数据库

在这里插入图片描述

  • 删除集合(必须进入集合所在的库)
use 库名
db.collectionName(集合名).drop()//删除集合

在这里插入图片描述
注意:唯一的集合删除(删除集合后库中没有集合了),库也就删除了


4. MongoDB的一些基本入门命令


  • db代表当前数据库
    在这里插入图片描述
  • db.stu.find()查看表的数据
    在这里插入图片描述
  • show dbs 查看当前的数据库
    在这里插入图片描述
  • use databaseName(库名) 选库
    在这里插入图片描述
  • show collections 查看当前库下的collection,也可以用show tables
    在这里插入图片描述

发布了107 篇原创文章 · 获赞 43 · 访问量 6132

猜你喜欢

转载自blog.csdn.net/langdei/article/details/102925226