Scrapy爬虫框架

本文介绍了Scrapy——一个基于Python的开源网络爬虫框架。Scrapy使用Twisted进行异步处理,具备高性能、可配置性、XPath和CSS选择器支持、中间件和扩展机制等特点。文章详细讲解了Scrapy的架构原理,包括引擎、调度器、下载器、爬虫和实体管道。同时,还提供了在CMD和PyCharm中搭建Scrapy环境的步骤,以及Scrapy项目的基本结构。文章通过一个入门案例,演示了明确爬虫目标、制作爬虫、存储数据和运行爬虫的完整过程。
摘要由CSDN通过智能技术生成



1、Scrapy概述

1.1、Scrapy简介

Scrapy是一个基于Python的开源网络爬虫框架,用于从网页中提取数据。它提供了一套高效、灵活和可扩展的工具,可以帮助开发者快速构建和部署爬虫程序

Scrapy是一个由Python语言开发的适用爬取网站数据、提取结构性数据的Web应用程序框架。主要用于数据挖掘、信息处理、数据存储和自动化测试等。通过Scrapy框架实现一个爬虫,只需要少量的代码,就能够快速的网络抓取

Scrapy基于Twisted,Twisted是一个异步网络框架,主要用于提高爬虫的下载速度。Scrapy使用Twisted异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。Scrapy使用的是非堵塞的异步处理

Scrapy框架具有以下特点:

  • 高性能:Scrapy 采用异步的网络请求和处理机制,能够高效地处理大规模的网页抓取任务

  • 可配置性:Scrapy提供了丰富的配置选项,可以通过配置文件或代码灵活地设置爬虫的行为,包括请求头、请求间隔、并发数等

  • XPath和CSS选择器:Scrapy内置了强大的选择器,支持使用XPath和CSS选择器来定位和提取网页中的数据

  • 中间件和扩展:Scrapy提供了中间件和扩展机制,开发者可以通过编写中间件和扩展来自定义和扩展框架的功能,例如自定义请求处理、数据处理、错误处理等

  • 分布式支持:Scrapy可以与分布式任务队列(如Celery)结合使用,实现分布式爬取和数据处理

  • 数据存储:Scrapy支持将爬取到的数据存储到各种数据存储系统,包括文件、数据库(如MySQL、PostgreSQL)和NoSQL数据库(如MongoDB)等

  • 日志和调试:Scrapy提供了强大的日志和调试功能,可以帮助开发者进行爬虫的调试和错误排查

1.2、Scrapy架构原理

Scrapy框架5大组件(架构):

在这里插入图片描述

  • Scrapy引擎(Scrapy Engine):Scrapy引擎是整个框架的核心,负责Spider、ItemPipeline、Downloader、Scheduler间的通讯、数据传递等
  • 调度器(Scheduler):网页URL的优先队列,主要负责处理引擎发送的请求,并按一定方式排列调度,当引擎需要时,交还给引擎
  • 下载器(Downloader):负责下载引擎发送的所有Requests请求资源,并将其获取到的Responses交还给引擎,由引擎交给Spider来处理
  • 爬虫(Spider):用户定制的爬虫,用于从特定网页中提取信息(实体Item),负责处理所有Responses,从中提取数据,并将需要跟进的URL提交给引擎,再次进入调度器
  • 实体管道(Item Pipeline):用于处理Spider中获取的实体,并进行后期处理(详细分析、过滤、持久化存储等)

其他组件:

  • 下载中间件(Downloader Middlewares):一个可以自定义扩展下载功能的组件
  • Spider中间件(Spider Middlewares):一个可以自定扩展和操作引擎和Spider间通信的组件

Scrapy的爬取流程为:

  • 引擎从调度器中取出一个链接(URL)用于接下来的抓取
  • 引擎把URL封装成一个请求(Request)传给下载器
  • 下载器把资源下载下来,并封装成应答包(Response)
  • 爬虫解析Response
  • 解析出的实体(Item),交给实体管道进行进一步的处理
  • 解析出的链接(URL),交给调度器等待抓取

Scrapy官网:https://docs.scrapy.org

入门文档:https://doc.scrapy.org/en/latest/intro/tutorial.html

Scrapy中文文档:https://www.osgeo.cn/scrapy/

2、Scrapy环境搭建

2.1、CMD搭建Scrapy环境

1) CMD命令行安装Scrapy:

pip install scrapy

在这里插入图片描述

安装完成后输入scrapy命令验证:

scrapy

在这里插入图片描述

2) 在存放爬虫项目的目录下创建爬虫项目:

scrapy startproject ScrapyDemo

CMD切换操作:

F:            # 切盘
cd A/B/...    # 切换目录

在这里插入图片描述

该命令会在当前目录下生成Scrapy项目:

在这里插入图片描述

3) 使用PyCharm打开创建的项目,初始项目结构如下:

在这里插入图片描述

2.2、PyCharm搭建Scrapy环境

1) 新建爬虫项目目录

方式1:使用PyCharm打开本地存放爬虫项目的文件夹(删除main.py

方式2:在已有项目中新建存放爬虫项目的目录

2) 打开Terminal终端,安装Scrapy:

pip install scrapy

在这里插入图片描述

3) 在Terminal终端创建爬虫项目(方式2需要cd到该目录下):

scrapy startproject ScrapyDemo

在这里插入图片描述

该命令会在当前目录下生成Scrapy项目,项目初始结构与CMD模式下相同

2.3、Scrapy项目结构

无论使用哪种方式搭建,最重要的是爬虫,因此,爬虫文件不可或缺

4) 在spiders文件夹下创建核心爬虫文件(可自定义):SpiderDemo.py

最终项目结构及说明如下:

ScrapyDemo/                              爬虫项目名
    ├── ScrapyDemo/                      爬虫项目目录    
    │      ├── spiders/                  爬虫文件
    │      │      ├── __init__.py   
    │      │      └── SpiderDemo.py      自定义核心功能文件
    │      ├── __init__.py   
    │      ├── items.py                  爬虫目标数据
    │      ├── middlewares.py            中间件、代理  
    │      ├── pipelines.py              管道,用于处理爬取的数据    
    │      └── set
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值