Scrapy 是一个用于爬取网站数据、提取结构化信息的 Python 框架,它具有高效、灵活、可扩展等特点,广泛应用于网络爬虫开发
传统爬虫爬取数据流程
- 明确爬取目标与需求。
- 用网络请求库发送 HTTP 请求。
- 接收并根据状态码判断响应。
- 利用解析库解析响应数据。
- 清洗、处理提取的数据。
- 将数据存储到本地或数据库。
- 制定页面遍历的爬取策略。
- 采取措施应对网站反爬虫机制。
Scrapy爬取数据流程
- 首先,Spider 将起始 URL 交给 Scheduler。
- Scheduler 把 URL 分发给 Downloader 进行下载。
- Downloader 将下载好的网页内容返回给 Spider。
- Spider 解析网页内容,提取出 Item 和新的 URL。提取到的 Item 会被送到 Item Pipeline 进行处理,而新的 URL 则会被交给 Scheduler,继续进行下一轮的爬取。
Scrapy的优点
- 异步处理:Scrapy 基于 Twisted 异步网络库构建,能实现异步 I/O 操作。这意味着在等待一个请求的响应时,它可以同时处理其他请求,不会被单个请求阻塞。传统爬虫若采用同步方式,在处理大量请求时,效率会大幅降低。比如在爬取新闻网站的多篇文章时,Scrapy 可同时发起多个请求并处理响应,而传统同步爬虫只能按顺序一个一个处理。
- 高并发处理:借助异步机制,Scrapy 能轻松处理高并发请求。在需要爬取大规模数据时,它可以高效地管理大量的并发连接,显著提升爬取速度。传统爬虫若要实现高并发,通常需要复杂的多线程或多进程编程,并且容易出现资源竞争和性能瓶颈等问题。
- 主要的是上面的两个,另外还有框架都有的特点,利于维护,插件多种多样,处理数据功能强大等
Scrapy的主要组件
- Spider(蜘蛛) :负责定义爬取的逻辑和规则,包括起始 URL、如何跟进链接以及如何解析页面数据等。
- Item(项目) :用于定义爬取数据的结构,类似于数据库中的表结构,明确了要保存的数据字段。
- Item Pipeline(项目管道) :负责处理蜘蛛提取出来的 Item,如数据清洗、验证、存储到数据库等。
- Downloader(下载器) :负责根据蜘蛛的请求下载网页内容,将下载的页面传递给蜘蛛进行解析。
- Scheduler(调度器) :用于管理爬取请求的队列,决定下一个要抓取的 URL,实现对爬取任务的调度和管理。
安装Scrapy
pip install scrapy==2.6.1
创建项目
scrapy startproject a 终端运行这行代码,a是项目名称,当然得指定路径,我认为最方便的方法就是在你的vscode pycharm 上的终端运行,那样默认的就是你代码文件的地址,如果你打开的是cmd,那么就默认的是c盘
前一阵子在准备蓝桥杯,博客有点停滞了,后面会陆续发一些内容,主要是我近期学的一些东西,本人大一,新手小白,请大家多多指教!