【爬虫开发】爬虫开发从0到1全知识教程第11篇:Mongodb数据库,Mongodb数据库【附代码文档】

🏆🏆🏆教程全知识点简介: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执行环境)。

📚📚👉👉👉本站这篇博客: https://bbs.huaweicloud.com/blogs/454584 中查看
📚📚👉👉👉本站这篇博客: https://bbs.huaweicloud.com/blogs/453661 中查看
📚📚👉👉👉本站这篇博客: https://bbs.huaweicloud.com/blogs/454584 中查看
✨ 本教程项目亮点
🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考
🎯🎯🎯全教程总章节
🚀🚀🚀本篇主要内容
Mongodb数据库
介绍
在前面的中 学习了mysql这种关系型数据库,那么接下来, 会来学习一种非关系型数据库mongodb,mongodb数据库主要用于海量存储,常被用在数据采集项目中。
内容
- mongodb的介绍和安装
- mongodb的简单使用
- mongodb的增删改查
- mongodb的聚合操作
- mongodb的索引操作
- mongodb的权限管理
- mongodb和python交互(pymongo模块)
mongodb文档
[
mongodb和python交互
学习目标
- 掌握 mongdb和python交互的增删改查的方法
- 掌握 权限认证的方式使用pymongo模块
1. mongdb和python交互的模块
pymongo
提供了mongdb和python交互的所有方法 安装方式: pip install pymongo
2. 使用pymongo
2.1 导入pymongo并选择要操作的集合
数据库和集合能够自动创建
2.1.1 无需权限认证的方式创建连接对象以及集合操作对象
[Plotly Python]
from pymongo import MongoClient
client = MongoClient(host,port) # 如果是本地连接host,port参数可以省略
collection = client[db名][集合名]
# collection = client.db名.集合名 # 与上边用法相同
[CherryPy 文档]
2.1.2 需要权限认证的方式创建连接对象以及集合操作对象
from pymongo import MongoClient
from urllib.parse import quote_plus
user = 'python' # 账号
password = 'python' #
host = '127.0.0.1' # host
port = 27017 # port
uri = "mongodb://%s:%s@%s" % (quote_plus(user),
quote_plus(password),
host)
# quote_plus函数:对url进行编码
# uri = mongodb://python:python@127.0.0.1
client = MongoClient(uri, port=port)
collection = client.db名.集合名
2.2 insert()添加数据
insert可以批量的插入数据列表,也可以插入一条数据
collection.insert({一条数据})
collection.insert([{数据一},{数据二}])
[TensorFlow 文档]
2.2.1 添加一条数据
返回插入数据的_id
ret = collection.insert({"name":"test10010","age":33})
print(ret)
2.2.2 添加多条数据
返回ObjectId对象构成的列表
item_list = [{"name":"test1000{}".format(i)} for i in range(10)]
rets = collection.insert(item_list)
print(rets)
for ret in rets:
print(ret)
2.3 find_one()查找一条数据
接收一个字典形式的条件,返回字典形式的整条数据 如果条件为空,则返回第一条
ret = client.test.test.find_one({'name': 'test10001'})
print(ret) # 包含mongodb的ObjectId对象的字典
_ = ret.pop('_id') # 清除mongodb的ObjectId对象的k,v
print(ret)
2.4 find()查找全部数据
返回所有满足条件的结果,如果条件为空,则返回全部 结果是一个Cursor游标对象,是一个可迭代对象,可以类似读文件的指针,但是只能够进行一次读取
rets = collection.find({"name":"test10005"}),
for ret in rets:
print(ret)
for ret in rets: #此时rets中没有内容
print(ret)
[Selenium Python 文档]
2.5 update()更新数据(全文档覆盖或指定键值,更新一条或多条)
- 语法:collection.update({条件}, {'$set':{指定的kv或完整的一条数据}}, multi=False/True, upsert=False/True)
- multi参数:默认为False,表示更新一条; multi=True则更新多条; multi参数必须和$set一起使用
- upsert参数:默认为False; upsert=True则先查询是否存在,存在则更新;不存在就插入
- $set表示指定字段进行更新
2.5.1 更新一条数据;全文档覆盖;存在就更新,不存在就插入
data = {'msg':'这是一条完整的数据1','name':'哈哈'}
client.test.test.update({'haha': 'heihei'}, {'$set':data}, upsert=True)
2.5.2 更新多条数据;全文档覆盖;存在就更新,不存在就插入
data = {'msg':'这是一条完整的数据2','name':'哈哈'} # 该完整数据是先查询后获取的
client.test.test.update({}, {'$set':data}, multi=True, upsert=True)
2.5.3 更新一条数据;指定键值;存在就更新,不存在就插入
data = {'msg':'指定只更新msg___1'}
client.test.test.update({}, {'$set':data}, upsert=True)
2.5.4 更新多条数据;指定键值;存在就更新,不存在就插入
data = {'msg':'指定只更新msg___2'}
client.test.test.update({}, {'$set':data}, multi=True, upsert=True)
2.6 delete_one()删除一条数据
collection.delete_one({"name":"test10010"})
2.7 delete_many()删除全部数据
collection.delete_many({"name":"test10010"})
3. pymongo模块其他api
查看pymongo官方文档或源代码 [
小结
- 掌握pymongo的增删改查的使用
- 掌握权限认证的方式使用pymongo模块
---
Mongodb数据库
介绍
在前面的中 学习了mysql这种关系型数据库,那么接下来, 会来学习一种非关系型数据库mongodb,mongodb数据库主要用于海量存储,常被用在数据采集项目中。
内容
- mongodb的介绍和安装
- mongodb的简单使用
- mongodb的增删改查
- mongodb的聚合操作
- mongodb的索引操作
- mongodb的权限管理
- mongodb和python交互(pymongo模块)
mongodb文档
[python-jose 文档]
[
scrapy的概念和流程
学习目标:
- 了解 scrapy的概念
- 了解 scrapy框架的作用
- 掌握 scrapy框架的运行流程
- 掌握 scrapy中每个模块的作用
1. scrapy的概念
Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。
Scrapy 使用了Twisted['twɪstɪd]异步网络框架,可以加快 的下载速度。
Scrapy文档地址:[
2. scrapy框架的作用
少量的代码,就能够快速的抓取
3. scrapy的工作流程
3.1 回顾之前的爬虫流程
3.2 上面的流程可以改写为
[Python 标准库参考]
3.3 scrapy的流程
其流程可以描述如下:
- 爬虫中起始的url构造成request对象-->爬虫中间件-->引擎-->调度器
- 调度器把request-->引擎-->下载中间件--->下载器
- 下载器发送请求,获取response响应---->下载中间件---->引擎--->爬虫中间件--->爬虫
- 爬虫提取url地址,组装成request对象---->爬虫中间件--->引擎--->调度器,重复步骤2
- 爬虫提取数据--->引擎--->管道处理和保存数据
注意:
- 图中中文是为了方便理解后加上去的
- 图中绿色线条的表示数据的传递
- 注意图中中间件的位置,决定了其作用
- 注意其中引擎的位置,所有的模块之前相互独立,只和引擎进行交互
3.4 scrapy的三个内置对象
- request请求对象:由url method post_data headers等构成
- response响应对象:由url body status headers等构成
- item数据对象:本质是个字典
3.5 scrapy中每个模块的具体作用
注意:
- 爬虫中间件和下载中间件只是运行逻辑的位置不同,作用是重复的:如替换UA等
小结
- scrapy的概念:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架
-
scrapy框架的运行流程以及数据传递过程:
-
爬虫中起始的url构造成request对象-->爬虫中间件-->引擎-->调度器
- 调度器把request-->引擎-->下载中间件--->下载器
- 下载器发送请求,获取response响应---->下载中间件---->引擎--->爬虫中间件--->爬虫
- 爬虫提取url地址,组装成request对象---->爬虫中间件--->引擎--->调度器,重复步骤2
-
爬虫提取数据--->引擎--->管道处理和保存数据
-
scrapy框架的作用:通过少量代码实现快速抓取
- 掌握scrapy中每个模块的作用: 引擎(engine):负责数据和信号在不腰痛模块间的传递 调度器(scheduler):实现一个队列,存放引擎发过来的request请求对象 下载器(downloader):发送引擎发过来的request请求,获取响应,并将响应交给引擎 爬虫(spider):处理引擎发过
- 点赞
- 收藏
- 关注作者
评论(0)