(技术笔记)关于scrapy的一些学习与思考(基础篇)

前言

  关于爬虫这块,以前都是凭着兴趣,零零碎碎捯饬的,第一份工作也是做的java开发;但今年因为第二份工作的原因,几乎日夜都在搞爬虫,接触和学习了很多,但一直都只是碎片化的学习,最近在对系统进行优化的时候,发现自己很多东西已经记忆模糊了,或者不熟悉,因此需要对scrapy进行一个系统性的学习和整理,因此便整理出一份文档,作为个人的学习笔记。

Scrapy简介

  • Scrapy是一个快速且高级的网页爬虫爬取框架,用于爬取网站提取结构化数据
  • Scrapy 使用了 Twisted异步网络框架来处理网络通讯,可加快下载速度,且包含了各种中间件接口,可以灵活的完成各种需求。
  • 与requests对比:  
    • Scrapy 是框架,该框架是封装的,包含 request (异步调度和处理)、下载器(多线程的 Downloader)、解析器(selector)和 twisted(异步处理)等,因此不够灵活;
    • requests 是一个功能十分强大的py库,能满足大部分网页数据获取的需求。其工作原理是向服务器发送数据请求,至于数据的下载和解析,都需要自己处理,灵活性较高;

Scrapy架构

      

 

     

 

Scrapy Engine(引擎): 框架的核心,负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 负责接受引擎发送过来的Request请求,并按照一定的方式排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):爬虫,定义了爬取的逻辑和网页内容的解析规则,主要负责解析响应并生成结果和新的请求

Item Pipeline(管道):项目管道,它负负责处理spider从网页中抽取的数据,主要是负责清洗,验证和向数据库中存储数据

Downloader Middlewares(下载中间件):下载中间件,是处于Scrapy的Request和Requesponse之间的处理模块,可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):spider中间件,位于引擎和spider之间的框架,主要处理spider输入的响应和输出的结果及新的请求middlewares.py里实现

Scrapy命令

命令说明格式
startproject 创建新工程 scrapy startproject<name>[dir]
genspider 创建一个爬虫 scrapy genspider[options]<name> <domain>
settings 获得爬虫配置信息 scrapy settings [options]
crawl 运行爬虫 scrapy crawl <spider>
list 列出工程中所有爬虫 scrapy list
shell 启动URL调试命令行 scrapy shell [URL]

               

 Scrapy项目结构

- 以自己的sync_order模块为例:

 

 

 

  • scrapy.cfg: 部署爬虫项目的配置文件
  • sync_order: 自定义项目sync_order的python模块。
  • sync_order/items.py: 项目中的item文件.在此定义需要要抽取的Item对象
  • sync_order/pipelines.py: 项目中的管道文件.对数据进行抽取清洗存储的
  • sync_order/settings.py: 项目的设置文件.
  • sync_order/spiders/: 放具体spider代码的目录
  • sync_order/middlewars.py 爬虫项目的中间件
posted @ 2020-12-25 19:00  鞠政_小鞠  阅读(176)  评论(0)    收藏  举报