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的特点

该数据库数据的量和处理时间较于关系型数据库快很多

该数据库也是大数据生态圈里面常用的一款软件

该数据是一款最像关系型数据库的非关系数据库(文本结构)

'''
横向扩展与纵向扩展(以提升计算机性能为例)
横向扩展:买来多台计算机组合使用(常用于企业)
纵向扩展:就在一台计算机上面不停的优化(用于个人)
"""

MongoDB重要概念

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({})

返回目录

posted @ 2021-10-08 20:01  微纯册  阅读(127)  评论(0编辑  收藏  举报