Code前端首页关于Code前端联系我们

scrapy框架基本定义及命令介绍

terry 2年前 (2023-09-24) 阅读数 72 #后端开发

1. scrapy简介及其工作流程

1.1什么是scrapy

scrapy是一个封装在爬虫中的明星框架。它最初是为了浏览网页而诞生的。附加扩展可用于检索 API 或通用 Web 浏览器返回的数据。使用scrapy框架开发的爬虫,任何开发者都可以根据自己的需求轻松定制,大大提高了开发效率。

1.2 为什么要向scrapy学习

在Python爬虫中:Requests+selenium可以解决爬虫大约90%的需求,那么scrapy解决了剩下的10%?显然,事实并非如此。我们应该学习scrapy框架的主要原因是其强大的通用性,可以让开发者在开发过程中节省一些常用功能的时间,提高开发效率。此外,scrapy 还具有以下特性:

  1. 异步
  2. 使用更具可读性的 xpath 代替常规 xpath
  3. 性能统计和日志系统
  4. 写入模式支持,适合独立调试 ❀统一过滤器
  5. 通过管道的数据存储方式

scrapy的框架也有常见的框架缺点:

  1. 可扩展性差
  2. 基于twisted(在事件驱动网络框架上实现的异步网络框架,运行Exception中不会杀死reactor和异步框架发生错误时不会停止其他任务,错误后数据将很难检测到

1.3 五个主要组件介绍

scrapy 框架主要由五个主要组件组成,分别是 Scheduler、Downloader 、Spider、Scrapy Engine 和 Item Pipeline.

  1. scrapy 引擎(Scrapy Engine) 引擎是整个 scrapy 框架的核心,它用来控制各个组件之间的通信,包括信号和数据的传输。
  2. Crawler(Spider,开发者编写)根据个人需求定制自己的爬虫,用于从特定网站中提取你需要的信息,即实体(Items)。当然,你也可以提取链接,让scrapy继续浏览下一页。
  3. Item Pipeline(开发者编写)用于处理爬虫提取的实体。主要功能是实体持久化、实体验证和删除不必要的信息(数据处理)。
  4. Downloader(下载器,一般不需要重写) Downloader是所有组件中最难的。它负责下载引擎发送的所有请求,并将收到的响应返回给引擎,由引擎转发。蜘蛛已被处理。
  5. 调度器负责接收引擎发送的请求,并按照一定的方式进行排队,并在引擎需要时返回给引擎。注:所有模块(除引擎外)都是相互独立的。它们只与引擎交互,不能直接交互

1.4 scrapy 工作流程

scrapy框架基本定义与命令介绍

2. 安装 scrapy 框架及其基本命令

2.1 安装及注意事项

首先更新 pip 包管理器: python - m pip install --upgrade pip

安装scrapy:pip install scrapy

安装时最好切换到家庭下载源,自动安装依赖包

scrapy验证:控制台命令行。如果显示scrapy的版本号信息,则证明安装成功

如果安装失败,检查是否是因为安装scrapy时没有自动安装相关依赖。该包相关的依赖包如下:lxml、wheel、twisted、pywin32。如果缺少其中任何一个依赖包,只需pip其中一个即可

2.2 基本命令

version:显示 scrapy 版本

bench:运行测试

load:请求测试,可以向特定发起请求URL并获取响应URL,例如:scrapy加载https://www.baidu.com

startproject:创建爬虫项目scrapy starproject项目名称

genspider:创建爬虫任务。进入项目文件夹后 scrapy genspider 爬虫作业名称模板 URL,例如 scrapy genspider myspider01 www.xxx.com runspider: 启动 scrapy 项目

3. scrapy 项目目录结构概览

创建项目:scrapy startproject +

示例:scrapy startproject myspider

生成的目录和文件结果如下: scrapy框架基本定义与命令介绍

设置文件中的设置信息

3.1 项目中为什么需要配置文件? 配置中的V文件中存储了一些公共变量,在下面的项目中可以方便地修改这些变量,例如:本地测试数据库和实施服务器数据库不一致

3.2 配置中如何使用变量file

变量名一般都是大写,导入后即可使用

3.3settings.py中的关键字段及含义

USER_AGENT 设置全局ua
ROBOTSTXT_OBEY 是否遵守robots协议,默认是遵守,robots协议,需要手动改成False
CONCURRENT_REQUESTS 设置并发请求的数量,默认是32个
DOWNLOAD_DELAY 下载延迟
CONCURRENT_REQUESTS_PER_DOMAIN = 16 # domain 单域名访问并发数
CONCURRENT_REQUESTS_PER_IP = 16 # 单IP的并发数
COOKIES_ENABLED 是否开启cookie,即每次请求带上前一次的cookie
TELNETCONSOLE_ENABLED = False # 查看爬虫信息相关
DEFAULT_REQUEST_HEADERS 设置默认请求头,这里加入了USER_AGENT将不起作用
SPIDER_MIDDLEWARES 爬虫中间件,设置过程和管道相同
DOWNLOADER_MIDDLEWARES 下载中间件
ITEM_PIPELINES = {
路径: 权重 items对象装了一些数据,,文字json..图片
'douban.pipelines.DoubanPipeline': 300, # 用来处理保存逻辑的部分 权重越小,优先级
越大
}
FEED_EXPORT_ENCODING 设置编码格式
BOT_NAME = 'douban' # 爬虫项目的名称
SPIDER_MODULES = ['douban.spiders'] # 爬虫应用的模板
NEWSPIDER_MODULE = 'douban.spiders' # 爬虫应用的模板
#AUTOTHROTTLE_ENABLED = True # 自动限速
#AUTOTHROTTLE_START_DELAY = 5 # 初始下载延迟的设置
#AUTOTHROTTLE_MAX_DELAY = 60 # 最大下载延迟
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 # Scrapy平均请求数应与每个远程服务器并行发送
#AUTOTHROTTLE_DEBUG = False #是否显示DEBUG
#HTTPCACHE_ENABLED = True # 缓存设置
#HTTPCACHE_EXPIRATION_SECS = 0 # 缓存时间
#HTTPCACHE_DIR = 'httpcache' # 路径
#HTTPCACHE_IGNORE_HTTP_CODES = [] # 缓存http的状态码
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' # 缓存
插件

4. scrapy爬虫的简单步骤(第一个scrapy爬虫的实现)

4.1 创建爬虫作业

scrapy genspider myspider01

4.2 运行爬虫作业

scrapy爬取myspider01 simple S一个蹩脚的爬虫只需要五个步骤:
新建项目:创建爬虫项目,命令:scrapy startproject xxxx
创建应用,命令:scrapy genspider Spider 目标站点名称
清除字段(写入 items.py) ):清除你要爬取的目标网站的字段
创建爬虫(spiders/spider.py):编写一个爬虫,开始爬取网页并分析网页内容
存储库内容(pipelines.py) ):设计管道存储爬取的shell内容调试模式:scrapy shell starturl

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门