Scrapy爬虫框架、MongoDB简介、下载与安装、重要概念
scrapy的基础知识和MongoDB的简介
- 爬虫框架Scrapy
- scrapy基本使用和文件介绍
- 非关系型数据库之MongoDB
- MongoDB简介
- MongoDB下载与安装
- 启动步骤
- MongoDB基本操作
爬虫框架Scrapy
scrapy的简介
功能最为强大,使用频率高的一款异步爬虫框架
''' 同步:提交完任务之后原地等待任务的返回结果期间不做任何事情 异步:提交任务之后不等待任务的返回结果,可以去做其他事情,结果可以通过回调获取(主动获取)
scrapy下载与安装
在dos界面或pycharm的terimal界面,输入代码(最好用国内的网址,网上可以查到)
pip3 insatll scrapy -i 网址
错误解决
问题1:
window系统可能出现问题
can not import Deque
解决方法:
升级python版本系统
问题2:
vistual c++ 需要c++升级
解决方法:
在mac系统下载不会出错,但windows系统可能出错
如果windows电脑下载出错,且没有关键字提示报错需要进行格外配置
1.
pip3 install wheel
2.网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
下载对应系统的文件,cp36:python3.6版本,amd64表示64位操作系统,win32表示32为操作系统
3.下载文件后的安装位置最好容易找到
可以通过报错信息查看文件的存放位置
pip3 install 文件名
4.
pip3 install pywin32
5.
pip3 install scrapy
验证scrapy是否下载成功
在dos界面输入scrapy,显示内容,下载成功
scrapy的基本使用和文件介绍
创建一个项目
语法:
scrapy startproject 项目名
首先进入D盘创建文件
>D:
>scrapy startproject job
自动生成一个内部含有多个py文件及文件夹的文案夹
创建爬虫文件
语法:
scrapy genspider 名称 网址
创建文件前,先进入目标文件夹
eg:
cd job
scrapy genspider baidu www.baidu.com
创建后可以在spiders中找到数据
打开.py文件可以看见
执行爬虫文件
1.
scrapy crawl jd
2.
执行指定文件时,要处于文件当前的文件夹位置
>cd job >cd spiders >scrapy runspider baidu.py
scrapy文件介绍
spiders文件:
存放爬虫项目文件
setting.py:
需要进行相关配置,将“ROBOTSTXT_OBEY=True” 改为 “ROBOTSTXT_OBEY=None”
'''ROBOTS.TXT爬虫协议:申明网络的一切数据不可爬取,所以没有必要遵循协议'''
middlewares.py:
中间件文件
'''在一个完整的操作流程中可以穿插多个小的操作步骤'''
piplines.py:
数据存储相关的文件
非关系型数据库之MongoDB
数据库的分类
关系型数据库
'''有固定的表结构,表与表之间存在对应关系''' 例如: MySQL、MariaDB、Ocrale、sql severce、PostgreSQL、sqlite
非关系型数据库
'''没有固定表结构,并且数据的存储采用的是k:v键值对形式''' 例如: redis,mongodb,memcache
MonogoDB的特点
该数据库数据的量和处理时间较于关系型数据库快很多
该数据库也是大数据生态圈里面常用的一款软件
该数据是一款最像关系型数据库的非关系数据库(文本结构)
''' 横向扩展与纵向扩展(以提升计算机性能为例) 横向扩展:买来多台计算机组合使用(常用于企业) 纵向扩展:就在一台计算机上面不停的优化(用于个人) """
MySQL | MongonDB | 名称 |
database | database | 库 |
table 表 | collection | 集合 |
row 行 | document | 文档 |
colum | field | 字段 |
MongoDB下载与安装
1.进入官网https://www.mongodb.com/try/download/community,选择社区版,选择对应的电脑系统、版本后下载
2. 进入下载页面后同意条框
3.无需任何操作点击Next
4.给勾选框不要打勾,点击Next
MongoDB文件介绍
安装成功后,打开安装地址可以看见
bin文件夹
'''里面存放一堆启动文件''' mongod.exe 服务端 mongo.exe 客户端
data文件夹
存放数据相关文件
log文件夹
存放日志相关文件
启动步骤
配置环境变量
进入环境变量配置
对系统变量Path进行编辑
新建文件路径
MongoDB的相关文件设置
查看mongodb文件夹内是否含有data和log文件夹
如果没有需要你自己手动创建
如果有则直接跳过
在data文件内创建db文件夹(目的是为了管理文件资源)
在MongoDB文件夹根目录下创建mongod.cfg文件,文件内代码为
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
DOS界面设置
输入代码
mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth '''auth即让服务端以校验用户身份的方式启动 不加则不校验(刚开始不加)'''
启动/关闭
net start MongoDB
net stop MongoDB
登录
mongo
MongoDB基本操作
基础命令
'''mongodb语句不需要分号结束'''
1.查看所有的数据库名词
show dbs
2.退出客户端
exit
quit()
MongoDB的特性
创建东西后,必须写入数据才会保存到硬盘, 在此之前都是在内存中临时创建,用完就没了
show dbs # 查看数据库
增加
use 库名
eg:
>use db1 >db.db1.insert({'name':'jjjj'}) >show dbs
删除
语法:
# db是关键字 当前在哪个库下执行改命令就是删除哪个库 >db.dropDatabase('库名')
eg:
删除db1库
>use db1
>db.dropDatabase()
针对集合
'''要想操作collection集合必须先有database库'''
增加
语法:
db.createCollection('表名')
# 如果单纯的创建不插入数据 那么也只是在内存临时创建
db.collection表名
eg:
创建db1、db2和db3表
db.createCollection('db1') db.db2
db.db.db2.insert({'name':'jason'})
db.db3
查
show tables
show collections
改
忽略
删
语法:
db.collection名字.drop()
eg:
删除db2
db.db2.drop()
针对文档(记录)增删改查
增
语法:
# 单条数据 db.表名.insert({}) # 多条数据 db.表名.insertMany([{},{},{}]) db.表名.insert([{},{},{}])
eg:
db.db1.insert([{'name':'hhh'},{'age':12},{'ged':'male'}])
db.db2 db.db2.insertMany([{'name':'hhh'},{'age':12},{'ged':'male'}])
查
语法:
db.表名.find() db.表名.find({' ':' '})
eg:
db.db2.find() db.db2,find({'name':'hhh'})
改
语法:
# 修改 db.表名.update({},{$set:{}}) # 完全替换 (少用) db.表名.update({})
eg:
db.db1.update({'name':'hhh'},{$set:{'name':'jasonNB'}})
db.db1.update({'name':'jasonNB'},{'name':'asd','age':12})
删
语法:
db.表名.remove({}) # 删除指定数据 db.表名.remove({'name':'jason'})
eg:
db.db1.remove({'name':'asd'})
# 删除db1表格 db.db1.remove({})