scrapy框架的优缺点

scrapy框架的优缺点scrapy 框架简介 Scrapy 是用纯 Python 实现一个为了爬取网站数据 提取结构性数据而编写的应用框架 用途非常广泛 用户只需要定制开发几个模块就可以轻松的实现一个爬虫 用来抓取网页内容以及各种图片 非常之方便 尽管 Scrapy 原本是设计用来屏幕抓取 更精确的说 是网络抓取 但它也可以用来访问 API 来提取数据 scrapy 架构图 scrapy 的各个模块 crapyEngin

scrapy框架简介:
Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。
尽管Scrapy原本是设计用来屏幕抓取(更精确的说,是网络抓取),但它也可以用来访问API来提取数据。
scrapy架构图:
在这里插入图片描述
scrapy的各个模块:
在这里插入图片描述
crapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)












简单的Scrapy 爬虫只需要五步:
新建项目 :创建爬虫项目,命令:scrapy startproject xxxx
创建应用,命令:scrapy genspider spider名称 目标站点
明确字段 (编写items.py):明确你想要抓取的目标站点的字段
制作爬虫 (spiders/spider.py):编写爬虫开始爬取网页,解析网页内容
存储内容 (pipelines.py):设计管道存储爬取内容




scrapy框架评价:
scrapy框架,将网页采集的通用功能,集成到各个模块中,留出自己定义的部分,它将程序员从繁冗的流程式重复劳动中解放出来,简单的网页爬虫的重点,就集中在应对反爬,大规模爬取和高效稳定的爬取这几个方面。
优点:
1)scrapy 是异步的,可以灵活调节并发量
2)采取可读性更强的 xpath 代替正则,速度快
3)写 middleware,方便写一些统一的过滤器
4)同时在不同的 url 上爬行
5)支持 shell 方式,方便独立调试
6)通过管道的方式存入数据库,灵活,可保存为多种形式
缺点:
1)无法用它完成分布式爬取
2)自身去重效果差,消耗内存,且不能持久化
3)对于需要执行js才能获取数据的网页,爱莫能助
4)兼容了下载图片与视频,但是可用性比较差
5)自身扩展的log模块,不好用,经常需要自定义
6)基于 twisted 框架,运行中的 exception 是不会干掉 reactor(反应器),并且异步框架出错后 是不会停掉其他任务的,数据出错后难以察觉,预警系统简单的使用邮件,很不友好














scrapy抓取简单的网页很有效,但也有很多缺陷,功能并不能十分满足日常需要,所以有许多公司自行定制化开发爬虫框架,来完成对数据的采集,许多扩展件在github上也取得了不小的成绩。

scrapy的扩展件:
scrapy_redis解决分布式爬取:
在这里插入图片描述
在这里插入图片描述
scrapy_redis通过redis实现调度器的队列和指纹集合,完成分布式和去重。
scrapy_redis_bloomfilter,基于Redis的Bloomfilter去重,并将其扩展到Scrapy框架,实现持久化去重,上亿或十亿级别的去重功能。
scrapy-splash ,整合了javascript,可以在scrapy当中执行js,获取数据,解析。





待爬取的目标网页站点,千奇百怪,在实际项目中,为了快速方便的实现功能,需要灵活的使用框架,比如结合requests使用,修改源码,重新定义扩展,输出日志到可视化工具系统,自定义发送钉钉预警等。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176395.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:02
下一篇 2026年3月26日 下午10:02


相关推荐

  • tensorflow模块安装

    tensorflow模块安装

    2021年11月19日
    48
  • LESSON 10.3 Halving网格搜索

    LESSON 10.3 Halving网格搜索三对半网格搜索 HalvingSearc 基本原理在讲解随机网格搜索之前 我们梳理了决定枚举网格搜索运算速度的因子 1 参数空间的大小 参数空间越大 需要建模的次数越多 2 数据量的大小 数据量越大 每次建模时需要的算力和时间越多面对枚举网格搜索过慢的问题 sklearn 中呈现了两种优化方式 其一是调整搜索空间 其二是调整每次训练的数据 调整搜索空间的方法就是随机网格搜索 而调整每次训练数据的方法就是对半网格搜索 假设现在存在数据集 我们从数据集 中随机抽样出一个子集

    2026年3月26日
    1
  • 【21】进大厂必须掌握的面试题-65个SQL面试

    【21】进大厂必须掌握的面试题-65个SQL面试

    2020年11月13日
    193
  • 30+个DeepSeek高级应用技巧(附详细案例讲解)

    30+个DeepSeek高级应用技巧(附详细案例讲解)

    2026年3月16日
    2
  • SerDes知识详解

    SerDes知识详解一 SERDES 的作用 1 1 并行总线接口 nbsp 在 SerDes 流行之前 芯片之间的互联通过系统同步或者源同步的并行接口传输数据 图 1 1 演示了系统和源同步并行接口 nbsp nbsp 随着接口频率的提高 在系统同步接口方式中 有几个因素限制了有效数据窗口宽度的继续增加 a 时钟

    2026年3月20日
    2
  • pytorch之分组卷积

    pytorch之分组卷积分组卷积推荐 请先看最底部的参考连接 普通卷积说明 普通卷积为组数为 1 的特殊分组卷积 classConv nn Module def init self in ch out ch groups super Conv self init self conv nn Conv2d

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号