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

2023-06-0917:56:17后端程序开发Comments1,755 views字数 3173阅读模式

一、scrapy介绍及其工作流程

1.1 什么是scrapy

scrapy是一个爬虫中封装好的明星框架,诞生之初是为了页面的抓取,之后进一步扩展可应用于获取 api所返回的数据或者通用的网络爬虫。使用scrapy框架开发的爬虫程序,任何开发人员都可以根据需 求很方便的对其进行修改,大大提高了开发效率。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

1.2 为什么要学习scrapy

在Python爬虫中:requests+selenium能够解决90%左右的爬虫需求,那么scrapy是解决剩下的10%的吗?很明显,并不是这样的。之所以要学习scrapy框架,主要是其有着很强的通用性,便于开发人员在 开发过程中能够在一些常用的功能上面节约时间从而提高开发效率,除此外,scrapy还具有以下特点:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

  1. 异步
  2. 采用可读性更强的xpath来代替正则
  3. 强大的统计和log系统
  4. 支持shell方式,方便独立调试
  5. 方便写一些统一的过滤器
  6. 通过管道的方式进行数据存储

当然,scrapy框架也存在了框架的共同缺点:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

  1. 扩展性比较差
  2. 基于twisted(是用Python实现的基于事件驱动的网络引擎框架)异步网络框架,运行中的exception 不会干掉reactor(反应器),并且异步框架出错后是不会停掉其他任务的,数据在出错之后难以察觉

1.3 五大组件介绍

scrapy框架主要是由五大组件构成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫 (Spider)、引擎(Scrapy Engine)以及实体管道(Item Pipeline)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

  1. scrapy引擎(Scrapy Engine) 引擎是整个scrapy框架的核心,其用于控制各个组件之间的通信,包括信号、数据的传递等。实际 上其控制着整个流程
  2. 爬虫(Spider,由开发人员编写) 根据个人需求定制自己的爬虫,用于从特定的网页中提取自己需要的信息,即实体(Item)。当然也 可以提取链接,让scrapy继续抓取下一个页面。
  3. 实体管道(Item Pipeline,由开发人员编写) 用于处理爬虫(spider)提取到的实体。主要的功能是持久化实体、验证实体的有效性、清除不必要 的信息(数据处理)。
  4. 下载器(Downloader,一般情况下不需要重写) 下载器是所有组件中负担最大的,负责下载引擎发送的所有请求,并将其获取到的响应交还给引 擎,由引擎来交给Spider进行处理。
  5. 调度器(Scheduler) 负责接受引擎发送过来的request请求,并按照一定的方式进行整理排列入队,当引擎需要的时候 就交还给引擎。 注意:所有模块(除引擎外)之间是相互独立的,只跟引擎进行交互,并不能直接交互

1.4 scrapy工作流程

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

二、scrapy框架的安装及其基本命令

2.1 安装及其注意事项

先更新pip包管理工具:python -m pip install --upgrade pip文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

安装scrapy: pip install scrapy文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

安装时最好换到国内下载源,以便自动安装依赖包文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

验证:在控制台命令行输出scrapy,如果显示scrapy的版本号信息,则证明安装成功文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

如果安装失败,检查是否是因为安装scrapy时没有自动安装其相关的依赖包 相关依赖包如下:lxml,wheel,twisted,pywin32,这几个依赖包缺哪个就直接pip哪一个即可文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

2.2 基本命令

version:显示scrapy版本文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

bench:运行测试文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

fetch:请求测试,能够对某一个url发起请求并获取到该url的响应,例如:scrapy fetch https:// www.baidu.com文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

startproject:创建爬虫项目 scrapy starproject 项目名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

genspider:创建爬虫任务 进入到项目文件夹之后,scrapy genspider 爬虫任务名 模板url,例如scrapy genspider myspider01 www.xxx.com runspider:运行scrapy项目文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

三、scrapy项目目录结构一览

创建项目:scrapy startproject +<项目名字>文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

示例:scrapy startproject myspider文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

生成的目录和文件结果如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

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

settings文件中的设置信息文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

3.1 为什么项目中需要配置文件

在配置文件中存放一些公共变量,在后续的项目中方便修改,如:本地测试数据库和部署服务器的数据库不一致文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

3.2 配置文件中的变量使用方法

变量名一般全部大写 导入即可使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

3.3 settings.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' # 缓存
插件

四、scrapy爬虫的步骤简要(实现第一个scrapy爬虫)

4.1 创建爬虫任务

scrapy genspider myspider01文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

4.2 运行爬虫任务

scrapy crawl myspider01 简单的Scrapy 爬虫只需要五步:
新建项目 :创建爬虫项目,命令:scrapy startproject xxxx
创建应用,命令:scrapy genspider spider名称 目标站点
明确字段 (编写items.py):明确你想要抓取的目标站点的字段
制作爬虫 (spiders/spider.py):编写爬虫开始爬取网页,解析网页内 容
存储内容 (pipelines.py):设计管道存储爬取内容 shell调试模式:scrapy shell starturl文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/46418.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/46418.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定