爬虫框架Scrapy与非关系型数据库MongoDB
创建一个项目
scrapy startproject 项目名
(自动生成一个内部含有多个py文件及文件夹的文件夹)
创建爬虫文件(之后的jd替换成任意网址均可)
scrapy genspider jd www.jd.com
(自动创建py文件并填写一定的代码 方便统一管理)
执行爬虫文件
scrapy runspider jd.com
scrapy crawl jd
数据库的分类
关系型数据库
MySQL、Oracle、PostgreSQL、MariaDB、sql server、sqlite
(固定的表结构 并且可以建立外键关系)
非关系型数据库
redis、mongodb、memcache
(没有固定的表结构 并且数据的存储采用的是k:v键值对形式)
非关系型数据库之MongoDB
该数据库存储数据的量和处理时间较于关系型数据库快很多
该数据库也是大数据生态圈里面常用的一款软件
该数据库是一款最像关系型数据库的非关系型数据库(文本结构)
(横向扩展与纵向扩展(以提升计算机性能为例)
横向扩展:买来多台计算机组合使用(常用,企业)
纵向扩展:就在一台计算机上面不停的优化(个人))
MongoDB重要概念
为了理解和学习的方便,我们还可以使用MySQL的名词来称呼
database database 库
table collection 集合
row document 文档
column field 字段
MongoDB下载与安装
https://www.mongodb.com/try/download/community
选择需要的版本下载msi文件即可
bin文件夹(里面存放一堆启动文件)
mongod.exe 服务端
mongo.exe 客户端
data文件夹(里面存放一堆启动文件)
log文件夹(里面存放日志相关文件)
启动步骤
1.去官网下载msi文件,双击安装即可
第二个自定义安装
2.MongoDB文件介绍
bin文件夹(里面存放一堆启动文件)
data文件夹(里面存放一堆启动文件
log文件夹(里面存放日志相关文件)
3.查看mongodb文件夹内是否含有data和log文件夹
如果没有需要手动创建
4.在data文件内创建db文件夹(目的是为了管理文件资源)
5.将启动文件所在的路径添加到环境变量中
6.在MongoDB文件夹根目录下
在该文件内拷贝以下代码(路径需要自己调整)
systemLog:
destination: file
path: "D:\MongoDB\log\mongod.log"
logAppend: true
storage:
journal:
enabled: true
dbPath: "D:\MongoDB\data\db"
net:
bindIp: 0.0.0.0
port: 27017
setParameter:
enableLocalhostAuthBypass: false
7.系统服务制作(路径需要自己调整)
services.msc
mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\Server\4.2\log\mongod.log --logappend --dbpath D:\MongoDB\Server\4.2\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth
(auth即让服务端以校验用户身份的方式启动 不加则不校验)
8.启动/关闭
net start MongoDB
net stop MongoDB
9.登陆
mongo
基础命令
(mongodb语句不需要使用分号结束)
1.查看所有的数据库名词
show dbs(show databases;)
(MongoDB有三个默认数据库
admin config local)
2.退出客户端
exit exit();
quit() quit()
补充
MongoDB的特性在于无需可以创建东西 指定即可使用但是只有在真正用到了该东西之后才会保存到硬盘 在此之前都是在内存中临时创建
查看
show dbs
(show databases;)
新增
use db1 会自动先在内存中自动创建,但只有db1中写入了数据才会保存到硬盘中
(create database db1;)
修改
忽略
删除
先插入数据 db.db1.insert({'name':'jason'})
db.dropDatabase() db是关键字,当前在哪个库下执行该命令就是删除哪个库
(drop database db1;)
针对集合(表的增删改查)
(相当于MySQL中的表的概念)
要想操作collection必须先有database
增
db.createCollection('表名')
db.collection名字
(如果单纯的创建不插入数据 那么也只是在内存临时创建)
查
show tables
show collections
改
忽略
删
db.collection名字.drop()
增
db.t1.insert({}) (单条数据)
insert也可以插入多条 db.t1.insert([{},{},{}])
db.t1.insertMany([{},{},{}]) (多条数据)
查
db.t1.find()
db.t1.find({'name':'jason'})
改
db.t1.update({'name':'jason'},{$set:{'name':'jasonNB'}}) 修改
db.t1.update({'name':'jasonNB'},{'name':'jason666'}) 替换(少用)
删
db.t1.remove({})
db.t1.remove({'name':'jason'})