浅谈Scrapy框架以及入门介绍

最近我也是一直抽空学习python的Scrapy爬虫框架。主要以看书为主,毕竟买的崔庆才的《Python3网络爬虫开发实战》已经两年了一直没有时间看完它,最近也是抽空看了看,看了好久了也学到了不少东西,也忘记了不少东西。古人那句话“学而不思则罔,思而不学则殆”还是非常正确的,如果你一直学习,但是不思考不实践的话会很快忘记的。

从毕业一直到现在也一直零零碎碎的学习网络和编程知识等等,看了不少书,总体感觉国人在教育方面的理念和国外的是很大的?怪不得很多人将孩子送到国外去读书,确实有差距,这也是我从书中明显感觉出来的。国人写的很多地方比较死板,只教会你怎么做,但是你不知道为什么要这样做。但是老外写的书,很多的地方将原理写的很透,而且会举例生活中的事物来论证这个道理。确实是差距,好了不多说,回归正题。

Scrapy框架介绍

之前简单看了pyspider框架,但是看了一点就放弃了。没兴趣,不是它不好,确实是我不喜欢。直接跳到Scrapy,一眼就喜欢上了这个框架。因为,Scrapy是一个基于Twisted的异步处理框架,最主要它是纯python实现的爬虫框架,架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我喜欢简单且强大的框架,不喜欢花哨的,哈哈。

scrapy原理图
Scrapy框架示意图

书中介绍太官方文字化,有时候说白了跟没介绍一样,介绍完根本看不懂。下面我在整理过程中,有的地方会按照我的理解以白话形式来写。

框架组成部分介绍

  • Engine。它是整个框架的引擎,负责处理整个系统的数据流处理、触发事物。是整个框架的中心,相当于人的大脑。
  • Item。项目,它里面定义了我们爬取结果的数据结构,我们爬取的数据会赋值成Item对象。你就暂且理解为设计的一个表格用来放东西的。
  • Scheduler。调度器,将引擎发过来的请求将其加入到队列中,将引擎再次请求的时候将请求提供给引擎。
  • Downloader。下载器,下载请求中的网页内容,将内容返回给蜘蛛。
  • Spiders。蜘蛛,主要负责爬取内容,按照我们事先写好的规则解析并提取结果这些,等等,也是整个框架中比较重要的。
  • Item Pipeline。项目管道,负责对蜘蛛在网页中抽取的内容进行清洗,检验,或者储存数据。就像一个滤网一样,过滤规则我们自己写。
  • Downloader Middlewares。下载中间件,位于引擎和下载器之间的钩子框架,主要处理引擎和下载器之间的请求和响应。
  • Spider Middlewares。蜘蛛中间件,位于引擎和蜘蛛之间的钩子框架,主要负责蜘蛛输入的响应和输出的结果及新的请求。

数据流(运行过程)

那么简单说下它是怎么运行的。网上教程和书中讲的太细,太文字化,不方便理解,下面我以我的理解和白话形式简单说下它的运行过程,底层的中间件的操作不说,那太乱了。首先假设我们已经创建了一个项目。什么都已经写好了。

  • 首先是Engine打开我们要爬取的网站,找到处理该网站的Spider,并向Spider请求第一个要爬取的URL。
  • Spider接到请求后,按照我们写好的规则抓取网页,然后得到网页结果,和下一个URL。
  • 结果返回给Item进行储存等操作,下一页的URl则又继续传给Spider继续抓取。往复循环,直到没有URL可抓取。
  • 在这个运行过程中,那些我没介绍到的中间件也可以完成很多的工作,例如Item pipeline可以完成数据清洗储存等操作,这些我不细说,因为我自己这块还没学透,后期博主再细说。

项目结构

上面简单说了Scrapy框架的组成部分和它的简单运行原理。那么它的项目结构目录是什么呢?这个也是我们的重点,因为我们的代码编写就是在这里。

和pyspider不同的是,它是通过命令行来创建项目的。首先我们确保自己pip下面已经安装了该框架,然后用scrapy命令创建项目。

  • 安装scrapy命令:在windows中打开命令行,或者win+R键输入cmd进入到命令行,然后输入pip install scrapy 安装框架
  • 创建项目: 随便创建进入到一个目录后然后shift+鼠标右键进入命令行,输入:scrapy startproject 项目名称

创建成功后,项目文件结构如下所示:

scrapy.cfg
project/
  __init__.py
  items.py
  pipelines.py
  settings.py
  middlewares.py
  spiders/
     __init__.py
    spider1.py
    spider2.py
    ......

上面各个文件的功能描述如下:

  • scrapy.cfg:它是Scrapy项目的配置文件。其中定义了项目的配置文件路径。部署相关信息。
  • items.py:它定义Item数据结构,所以的Item定义都可以放在这里。
  • pipelines.py:它定义了Item Pipeline的实现,我们可以在里面写一些规则进行数据清洗等工作。所有的都可在里面定义。
  • settings.py:它定义项目的全局配置。
  • middlewares.py:它定义spider middlewares和Downloader middlewares的实现。
  • spiders:其中包含我我们所有的spider的实现,每个spider都有一个文件。

结语

今天的scrapy框架的介绍简单写到这里,跟多的是整理吧。大家估计看的都头大了,哈哈。其实非常简单,我感觉python的框架都是模块化的,这样方便我们后期维护更改。还是比较好的。说实话文字化的东西我也不喜欢看,但是不得不学习它,最近博主会选定一个网站,然后以该框架进行实战,后面会将思路和代码进行分享。

框架其实也就这么简单,一说大家都肯定觉得也就那么回事。最重要的是我们里面的代码实现以及更复杂的工具运用等等。我也是一边学习一边分享,一边总结。感谢阅读,也希望直通道和的朋友们可以和我一起学习,互勉。

 

喜欢(0)

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎访问的小伙伴! 希望在这里能帮到你。有问题请多多指教~ 点击联系站长
在线客服

在线客服

  • 扫描二维码,微信联系 扫描二维码,进群联系