Python爬虫(十一)——Scrapy爬虫框架简介

Python爬虫(十一)——Scrapy爬虫框架简介

scrapy不是一个简单的功能库,而是一个功能强大的网络爬虫框架。它是实现爬虫功能的一个软件结构和功能组件集合。它约束了一个模板,用户用这个模板来实现爬虫。

安装

打开cmd执行一下语句:

pip install scrapy
scrapy -h

成功后:

success

结构

Scrapy有七个结构:SPIDERS(入口)、ITEM PIPELINES(出口)、ENGINE(已实现)、SCHEDULER(已实现)、DOWNLOADER(已实现)和MIDDLEWARE、INTERNET。

在这7个结构中,主要有三条数据流:

  1. SPIDERS->ENGINE->SCHEDULER 首先是Spider给EngineE提交请求Requests,然后Engine转发给Scheduler。
  2. SCHEDULER->EMGINE->DOWNLOADER->ENGINE->SPIDERS 首先是Scheduler向Engine提交网络爬取请求Requests,然后Engine通过中间件发送给Downloader,然后Downloader从Internet中爬取相关网页,然后将爬取内容封装成成响应对象Response再发送给Engine,最终到达Spider。
  3. SPIDERS->ENGINE->ITEM PIPELINES and SCHEDULER Spider处理从Downloader获得的响应后形成ITEMS和一个新的请求Requests,然后发送给Engine。然后Engine将Items发给Item Pipelines进行后期的数据处理,将Requests发送给Scheduler从而爬取新的信息。

解析

ENGINE 整个框架的核心

它的主要功能有:

  • 控制所有模块之间的数据流
  • 根据条件触发事件

DOWNLOADER

它的主要功能是获得一个请求然后爬取网页得到信息打包后返回。

SCHEDULER 调度模块

对所有的爬取请求进行调度管理,对这些请求进行排序。

Downloader Middleware

为了实施ENGINE、SCHDULER和DOWNLOADER之间的用户可配置的控制(修改、丢弃、新增请求或响应),设置了这个中间件。

SPIDER

主要功能:

  • 解析Downloader返回的响应
  • 产生爬取项
  • 产生额外的爬取请求

Item PIPELINES

以一组操作顺序组成,用流水线的方式处理Spider产生的爬取项(清理、检验和查重),最后将数据存储到数据库。

Spider MIDDLEWARE

为了请求和爬取项的再处理(修改、丢弃、新增请求或爬取项),设置了这个中间件

requests库与scrapy库的比较

相同点

  • 都可以进行页面请求和爬取
  • 可用性都很好,文档丰富,入门简单
  • 都没有处理js、提交表单、应对验证码等功能

不同点

requestsScrapy
页面级爬虫网站级爬虫
功能库框架
并发性不足,性能差并发性好,性能较好
重点在于页面下载重点在于爬虫结构
定制灵活一般定制灵活,深度定制困难
上手十分简单入门稍难

:网络爬虫的快慢只是一个简单的参数,在应对反爬机制时反而要求爬取速度较慢。小的程序适合使用requests库,而较大的适合Scrapy

常用命令

格式:

>scrapy <command> [options] [args]

常用命令:

命令说明格式
startproject创建一个新工程scrapy startproject <name> [dir]
genspider创建一个爬虫scrapy genspider [options] <name> <domain>
settings获得爬虫配置信息scrapy settings [options]
crawl运行一个爬虫scrapy crawl <spider>
list列出工程中所有爬虫scrapy list
shell启动URL调试命令行scrapy shell [url]

使用命令行是为了自动化操作,易于脚本控制。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值