scrapy框架基本定义及命令介绍
1. scrapy简介及其工作流程
1.1什么是scrapy
scrapy是一个封装在爬虫中的明星框架。它最初是为了浏览网页而诞生的。附加扩展可用于检索 API 或通用 Web 浏览器返回的数据。使用scrapy框架开发的爬虫,任何开发者都可以根据自己的需求轻松定制,大大提高了开发效率。
1.2 为什么要向scrapy学习
在Python爬虫中:Requests+selenium可以解决爬虫大约90%的需求,那么scrapy解决了剩下的10%?显然,事实并非如此。我们应该学习scrapy框架的主要原因是其强大的通用性,可以让开发者在开发过程中节省一些常用功能的时间,提高开发效率。此外,scrapy 还具有以下特性:
- 异步
- 使用更具可读性的 xpath 代替常规 xpath
- 性能统计和日志系统
- 写入模式支持,适合独立调试 ❀统一过滤器
- 通过管道的数据存储方式
scrapy的框架也有常见的框架缺点:
- 可扩展性差
- 基于twisted(在事件驱动网络框架上实现的异步网络框架,运行Exception中不会杀死reactor和异步框架发生错误时不会停止其他任务,错误后数据将很难检测到
1.3 五个主要组件介绍
scrapy 框架主要由五个主要组件组成,分别是 Scheduler、Downloader 、Spider、Scrapy Engine 和 Item Pipeline.
- scrapy 引擎(Scrapy Engine) 引擎是整个 scrapy 框架的核心,它用来控制各个组件之间的通信,包括信号和数据的传输。
- Crawler(Spider,开发者编写)根据个人需求定制自己的爬虫,用于从特定网站中提取你需要的信息,即实体(Items)。当然,你也可以提取链接,让scrapy继续浏览下一页。
- Item Pipeline(开发者编写)用于处理爬虫提取的实体。主要功能是实体持久化、实体验证和删除不必要的信息(数据处理)。
- Downloader(下载器,一般不需要重写) Downloader是所有组件中最难的。它负责下载引擎发送的所有请求,并将收到的响应返回给引擎,由引擎转发。蜘蛛已被处理。
- 调度器负责接收引擎发送的请求,并按照一定的方式进行排队,并在引擎需要时返回给引擎。注:所有模块(除引擎外)都是相互独立的。它们只与引擎交互,不能直接交互
1.4 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
生成的目录和文件结果如下:
设置文件中的设置信息
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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。