scrapy发起ajxe请求_第一章 第一节 scrapy以及各自模块介绍

这一节有点无聊, 更多的就是个介绍, 以及优缺点之类的, 然后让你自己确定学不学, 如果你接触过, 不看也行, 反正我也觉得没啥用。

一、scrapy介绍

scrapy底层使用的是twisted框架, 所以是异步抓取的一个框架, 其他的没啥介绍的了。
但是scrapy和requests或者别的框架有什么区别呢? 如何去选择呢?
scrapy的优势:

  1. 已经帮你完成了请求, 下载,以及请求失败重试, 统计
  2. 使你写爬虫更加规范化
  3. 性能很好(除非自己写出来阻塞)
  4. 扩展性好, 而且附加的库也比较多, 比如代理、缓存、以及管理web都比较多

scrapy的缺点:

  1. 上手难度比较大, 要学的东西比较多, 不熟悉的话很容易写出来性能很弱的代码
  2. 特定的情况不好处理, 比如需要运行js(scrapy-splash没那么简单, 而且你会发现限制很大), 模拟浏览器运行, 特殊情况的模拟登录
  3. 分布式的支持, 目前只有scrapy-redis, 如果你想换别的消息队列, 比如scrapy-rabbitmq 之类的, 放心, 基本没有的, 找到的也没人维护

总结:

  1. 如果学好scrapy的情况下, 很多都可以自己写扩展, 来完成特定的需求
  2. 只有真正完全熟悉了scrapy, 才能写出来高性能的爬虫
  3. 爬虫不是把数据抓下来就完事儿了, 实际情况的爬虫远比想象的复杂的多, 尤其是分布式爬虫
  4. 爬虫的难度不只有反爬, 更多的是网络情况, 以及规模大的情况

二、scrapy的架构图

457687529d5e60f595845dab7b7eca35.png

这就是scrapy官方的一个架构图, 看起来有点乱, 但是还挺好理解
简单来说, 就是

  1. Spiders(爬虫, 你编写的业务代码), 把Request(请求)扔给(Engine)引擎, 引擎扔给Scheduler(调度器)
  2. 调度器把请求给Downloader(下载器), 下载器完成请求, 然后返回给爬虫
  3. 爬虫把解析的数据扔给Pipeline(管道), Pipeline把数据导出或者保存起来

Item其实就是对抓取数据的一种规范化, 并且scrapy 提供了Item Loader来对Item里的数据进行处理

所以其实我们用的最多的就是

  1. Spiders(爬虫), 写实际的业务代码
  2. Item, 定义数据的结构
  3. Pipeline, 保存或者导出数据
  4. Spider Middleware(爬虫中间件), 对爬虫发起的请求、Item, 以及返回的数据进行进一步处理
  5. Downloader Middlewares(下载器中间件), 对请求和下载完的数据进行进一步处理

其实主要学会这几块, scrapy也就差不多了。

欢迎关注Python开发之路(微信号: python-developer)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值