🏆🏆🏆教程全知识点简介:1.Mongodb数据库包括介绍、mongodb简单使用(mongodb服务端启动、启动mongodb客户端进入mongo shell)。2. scrapy爬虫框架涵盖 ip使用、启动爬虫、停止爬虫、scrapyd webapi。3. Gerapy包含通过Gerapy配置管理scrapy项目。4. appium移动端抓取涉及appium自动控制移动设备、appium-python-client模块安装、初始化获取移动设备分辨率、定位元素提取文本方法、控制抖音app滑动、自动滑动代码整理。5. 爬虫概述包括爬虫概念、爬虫基础。6. http协议复习涵盖http及https概念区别、爬虫关注的请求头响应头、常见响应状态码、浏览器运行过程。7. requests模块包含requests发送post请求、POST请求练习、requests.session状态保持、课堂测试。8. 数据提取概述涉及响应内容分类、xml认识、html区别、常用数据解析方法。9. 数据提取-jsonpath模块包括jsonpath模块使用场景。10. 数据提取-lxml模块涵盖lxml模块xpath语法、谷歌浏览器xpath helper插件安装使用、xpath节点关系、xpath语法基础节点选择、xpath定位节点提取属性文本内容语法、语法练习、lxml模块安装使用示例。11. Selenium 包含获取当前标签页cookie信息、cookie转化为字典、删除cookie、页面等待。12. 反爬与反反爬涵盖常见反爬手段解决思路、服务器反爬原因、服务器反爬虫类型、反爬虫概念、反爬三个方向、基于身份识别反爬(session发送rKey获取登录信息、 加密、用户名 准备、js2py生成js执行环境)。
📚📚👉👉👉这篇博客: gitee.com/yinuo112/Ba… 中查看
✨ 本教程项目亮点
🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考
🎯🎯🎯全教程总章节

🚀🚀🚀本篇主要内容
Mongodb数据库
介绍
在前面的中我们学习了mysql这种关系型数据库,那么接下来,我们会来学习一种非关系型数据库mongodb,mongodb数据库主要用于海量存储,常被用在数据采集项目中。
内容
-
mongodb的介绍和安装
-
mongodb的简单使用
-
mongodb的增删改查
-
mongodb的聚合操作
-
mongodb的索引操作
-
mongodb的权限管理
-
mongodb和python交互(pymongo模块)
mongodb文档
mongodb的简单使用
学习目标
- 掌握 服务端的启动
- 掌握 客户端的使用
- 掌握 mongodb的数据库和集合命令
- 了解 文档中的_id字段
1. mongodb服务端的启动
- 默认端口:27017
- 默认配置文件的位置:/etc/mongod.conf
- 默认日志的位置:/var/log/mongodb/mongod.log
mongodb服务端启动分别两种方式:
-
本地测试方式的启动(只具有本地数据增删改查的功能)
-
生产环境启动(具有完整的全部功能)
1.1 测试方式启动
-
启动: sudo service mongod start (sudo service mongod start)
-
停止: sudo service mongod stop
-
重启: sudo service mongod restart
1.2 生产环境正式的启动方式
启动: sudo mongod [--auth --dbpath=dbpath --logpath=logpath --append --fork] [-–f logfile ]
-
只以 sudo mongod 命令启动时,默认将数据存放在了 /data/db 目录下,需要手动创建
-
--dbpath: 指定数据库的存放路径
-
--logpath: 指定日志的存放路径
-
--append: 或--logappend 设置日志的写入形式为追加模式
-
--fork: 或-fork 开启新的进程运行mongodb服务
-
--f: 或-f 配置文件路径(可以将上述配置信息写入文件然后通过该文件中的参数进行加载启动)
-
--auth: 以权限认证的方式启动,我们会在后边的中学习该内容
1.3 查看是否启动成功
ps aux | grep mongod
2. 启动mongodb的客户端:进入mongo shell
-
启动本地客户端: mongo
-
查看帮助:mongo –help
-
退出:exit或者ctrl+c
3. mongodb的简单使用
开启mongodb server的情况下,在进入mongo shell后,就可以做简单的使用了
3.1 mongodb数据库的命令
-
查看当前的数据库:db(没有切换数据库的情况下默认使用test数据库)
-
查看所有的数据库:show dbs /show databases
-
切换数据库:use db_name
- db_name为show dbs后返回的数据库名
-
删除当前的数据库:db.dropDatabase()
3.2 mongodb集合的命令
-
无需手动创建集合: 向不存在的集合中第一次添加数据时,集合会自动被创建出来
-
手动创建集合:
- db.createCollection(name,options)
- db.createCollection("stu")
- db.createCollection("sub", { capped : true, size : 10 } )
- 参数capped:默认值为false表示不设置上限,值为true表示设置上限
- 参数size:集合所占用的字节数。 当capped值为true时,需要指定此参数,表示上限大小,当文档达到上限时, 会将之前的数据覆盖,单位为字节
-
查看集合:show collections
-
删除集合:db.集合名称.drop()
-
检查集合是否设定上限: db.集合名.isCapped()
3.3 简单练习
在mongo shell中输入下列命令,查看结果
show dbs
use test
show collections
db
db.stu.insert({'name':'郭靖', 'age':22})
show dbs
show collections
db.stu.find()
db.stu.drop()
show collections
db.dropDatabase()
show dbs
exit
3.3 mongodb中常见的数据类型(了解)
3.3.1 常见类型
-
Object ID: 文档ID/数据的ID,数据的主键
-
String: 字符串,最常用,必须是有效的UTF-8
-
Boolean: 存储一个布尔值,true或false
-
Integer: 整数可以是32位或64位,这取决于服务器
-
Double: 浮点数
-
Arrays: 数组/列表
-
Object: mongodb中的一条数据/文档,即文档嵌套文档
-
Null: 存储null值
-
Timestamp: 时间戳,表示从1970-1-1到现在的总秒数
-
Date: 存储当前日期或时间的UNIX时间格式
3.3.2 注意点
-
每个文档都有一个属性,为_id,保证每个文档的唯一性,mongodb默认使用_id作为主键
- 可以手动设置_id的值,如果没有提供,那么MongoDB为每个文档提供了一个独特的_id, 类型为objectID
-
objectID是一个12字节的十六进制数,每个字节两位,一共是24位的字符串:
-
前4个字节为当前时间戳
-
接下来3个字节的机器ID
-
接下来的2个字节中MongoDB的服务进程id
-
最后3个字节是简单的增量值
-
小结
-
服务端的启动
- sudo mongod --dbpath=数据库路径
-
进入mongo shell客户端
- mongo
-
mongodb的数据库和集合命令
- show dbs
- use db_name
- show collections
- db
- db.集合名.drop()
- db.dropDatabase()
- exit
-
了解文档中的_id字段
Mongodb的的增删改查
学习目标
- 掌握 mongodb插入数据的方法
- 掌握 mongodb保存数据的方法
- 掌握 mongodb查询数据的方法
- 掌握 mongodb查询结果的处理方法
- 掌握 mongodb更新数据的方法
- 掌握 mongodb删除数据的方法
1. mongodb插入数据
命令:db.集合名称.insert(document)
db.stu.insert({name:'gj', gender:1})
db.stu.insert({_id:"20170101", name:'gj', gender:1})
插文档时,如果不指定_id参数,MongoDB会为文档自动分配一个唯一的ObjectId
2. mongodb的保存
命令:db.集合名称.save(document)
db.stu.save({_id:'20170101', name:'gj', gender:2})
db.stu.save({name:'gj', gender:2})
db.s