学习Scrapy入门

Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

如何下载scrapy

可以通过pip,conda或者github以及官网上下载。

pip install scrapy

或者

conda install scrapy

推荐使用国内的镜像源下载,否则会极其慢,而且经常会超时(说多了都是泪、、、)

如何新建一个scrapy项目

在Pycharm新建中有很多项目可以选择,例如flask,Django等,就是没有scrapy。所以scrapy的创建需要我们手动才可以。
我们可以通过命令行进入到需要建立项目的路径下,然后通过
scrapy startproject 项目名
即可创建一个scrapy项目。

文件目录 (图片来自scrapy官方文档)

上图即为一个基本scrapy项目的构成。

Scrapy的架构

图片来源:Scrapy tutorial
  1. Scrapy Engine
    引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。
  2. 调度器(Scheduler)
    调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。
  3. 下载器(Downloader)
    下载器负责获取页面数据并提供给引擎,而后提供给spider。
  4. Spiders
    Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。
  5. Item Pipeline
    Item Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。
  6. 下载器中间件(Downloader middlewares)
    下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。
  7. Spider中间件(Spider middlewares)
    Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能

一个最基本的爬虫会按照着途中绿色线的顺讯执行。其中的中间件更利于个人对爬虫的自定义和扩展,pipeline则是定义scrapy如何对爬取下来的数据进行处理。具体的流程如下:

  1. 引擎打开一个网站,找到处理该网站的Spider并向该Spider请求第一个要爬取的URL。
  2. 引擎从Spider中获取需要处理的URL并在schedule中进行Request调度
  3. 引擎向schedule请求一个需要进行Request处理的URL
  4. schedule通过下载器中间件将URL发送至下载器对需要爬去的URL进行下载
  5. 一旦URL的内容下载完成,会通过下载器中间件返回一个response到引擎中
  6. 引擎将收到的response返回到Spider中进行处理
  7. Spider处理完response后会返回一个item数据字典和新的request给引擎。
  8. 引擎接受到返回的item发送到pipeline中进行数据的处理(插入到数据库、处理成CSV或json文件、将多媒体文件保存到本地)
  9. 重复第二步直到没有可以处理的request
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信...
    JasonDing阅读 122,765评论 15 126
  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 13,016评论 4 46
  • scrapy是python最有名的爬虫框架之一,可以很方便的进行web抓取,并且提供了很强的定制型,这里记录简单学...
    bomo阅读 2,299评论 1 11
  • 梦见 老虎跟着我,温和,不吃人。 梦:奶奶要带着爷爷去武汉住,我说那边天冷 要带厚被子。去文具店买本,那家店原本是...
    奕蘅王阅读 196评论 0 0
  • 最近工作比较忙,实在没什么时间,所以就选择最简单的画图工具,一支自动铅笔搞定一幅图。
    木南_1982阅读 635评论 3 14

友情链接更多精彩内容