一、Scrapy 框架

Scrapy 是⽤纯 Python 实现⼀个为了爬取⽹站数据、提取结构性数据⽽编写的应⽤框架,⽤途⾮常⼴泛。

框架的⼒量,⽤户只需要定制开发⼏个模块就可以轻松的实现⼀个爬⾍,⽤来抓取⽹⻚内容以及各种图⽚,⾮常之⽅便。

Scrapy 使⽤了 Twisted ['twɪstɪd] (其主要对⼿是 Tornado)异步⽹络框架来处理⽹络通讯,可以加快我们的下载速度,不⽤⾃⼰去实现异步框架,并且包含了各种中间件接⼝,可以灵活的完成各种需求。

Scrapy 架构图(绿线是数据流向):

  • Scrapy Engine(引擎) : 负责 Spider 、 ItemPipeline 、 Downloader 、 Scheduler
    中间的通讯, 信号、数据传递等。
  • Scheduler(调度器) : 它负责接受 引擎 发送过来的 Request 请求,并按照⼀定的⽅式进⾏整理排列,⼊队,当引擎需要时,交还给 引擎 。
  • Downloader(下载器) :负责下载 Scrapy Engine(引擎) 发送的所有Requests 请求,并将其获取到的Responses 交还给 ScrapyEngine(引 擎) ,由 引擎 交给 Spider 来处理。
  • Spider(爬⾍) :它负责处理所有 Responses,从中分析提取数据,获取Item 字段需要的数据,并将需要跟进的 URL 提交给引擎 ,再次进⼊ Scheduler(调度器)。
  • Item Pipeline(管道) :它负责处理 Spider 中获取到的 Item,并进⾏进⾏后期处理(详细分析、过滤、存储等)的地⽅。
  • Downloader Middlewares(下载中间件) :你可以当作是⼀个可以⾃定义扩展下载功能的组件。
  • Spider Middlewares(Spider 中间件) :你可以理解为是⼀个可以⾃定扩展和操作 引擎 和 Spider 中间 通信的功能组件(⽐如进⼊ Spider 的Responses;和从 Spider 出去的 Requests)

二、Scrapy 的运作流程

代码写好,程序开始运⾏...

  1. 引擎 :Hi! Spider , 你要处理哪⼀个⽹站?
  2. Spider :⽼⼤要我处理 xxxx.com。
  3. 引擎 :你把第⼀个需要处理的 URL 给我吧。
  4. Spider :给你,第⼀个 URL 是 xxxxxxx.com。
  5. 引擎 :Hi! 调度器 ,我这有 request 请求你帮我排序⼊队⼀下。
  6. 调度器 :好的,正在处理你等⼀下。
  7. 引擎 :Hi! 调度器 ,把你处理好的 request 请求给我。
  8. 调度器 :给你,这是我处理好的 request
  9. 引擎 :Hi!下载器,你按照⽼⼤的 下载中间件 的设置帮我下载⼀下这个 request 请求
  10. 下载器 :好的!给你,这是下载好的东⻄。(如果失败:sorry,这个request 下载失败了。然后 引擎 告诉 调度器 ,这个 request 下载失败了,你记录⼀下,我们待会⼉再下载)
  11. 引擎 :Hi! Spider ,这是下载好的东⻄,并且已经按照⽼⼤的 下载中 间 件 处理过了,你⾃⼰处理⼀下(注意!这⼉responses 默认是交给 defparse() 这个函数处理的)
  12. Spider :(处理完毕数据之后对于需要跟进的 URL),Hi! 引擎 , 我 这⾥有两个结果,这个是我需要跟进的 URL,还有这个是我获取到的 Item 数据。
  13. 引擎 :Hi ! 管道 我这⼉有个 item 你帮我处理⼀下! 调度器 !这是需 要跟进 URL 你帮我处理下。然后从第四步开始循环,直到获取完⽼⼤需要全部信息。
  14. 管道``调度器 :好的,现在就做!

注意!只有当 调度器 中不存在任何 request 了,整个程序才会停⽌,(也就是说,对于下载失败的 URL,Scrapy 也会重新下载。)

制作 Scrapy 爬⾍ ⼀共需要 4 步:

  • 新建项⽬ (scrapy startproject xxx):新建⼀个新的爬⾍项⽬
  • 明确⽬标 (编写 items.py):明确你想要抓取的⽬标 制作爬⾍
  • (spiders/xxspider.py):制作爬⾍开始爬取⽹⻚
  • 存储内容 (pipelines.py):设计管道存储爬取内容

点击获取 爬虫视频教程和爬虫学习资料。

Scrapy 框架官⽅⽹址:http://doc.scrapy.org/en/latest Scrapy 中⽂维护站
点:http://scrapychs.readthedocs.io/zh_CN/latest/index.html

本文首发于python黑洞网,csdn同步更新

Python爬虫教程之Scrapy 框架相关推荐

  1. Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用

    Python爬虫5.3 - scrapy框架spider[Request和Response]模块的使用 综述 Request对象 scrapy.Request()函数讲解: Response对象 发送 ...

  2. python爬虫入门(六) Scrapy框架之原理介绍

    Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...

  3. pythonscrapy爬虫_零基础写python爬虫之使用Scrapy框架编写爬虫

    网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据.虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间.Scrapy是一个使用Python编写的,轻 ...

  4. python爬虫之使用Scrapy框架编写爬虫

    转自:http://www.jb51.net/article/57183.htm 前面的文章我们介绍了Python爬虫框架Scrapy的安装与配置等基本资料,本文我们就来看看如何使用Scrapy框架方 ...

  5. python爬虫:使用scrapy框架抓取360超清壁纸(10W+超清壁纸等你来爬)

    目的:闲着无聊,利用爬虫爬取360超清壁纸,并将其数据存储至MongoDB/MySQL中,将图片下载至指定文件夹. 要求:确保以安装MongoDB或者MySQL数据库.scrapy框架也肯定必须有的: ...

  6. python爬虫教程:Scrapy框架爬取Boss直聘网Python职位信息的源码

    今天小编就为大家分享一篇关于Scrapy框架爬取Boss直聘网Python职位信息的源码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 分析 使用Crawl ...

  7. PYTHON 爬虫笔记十一:Scrapy框架的基本使用

    Scrapy框架详解及其基本使用 scrapy框架原理 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为 ...

  8. python爬虫学习笔记-scrapy框架之start_url

    在使用命令行创建scrapy项目后,会发现在spider.py文件内会生成这样的代码: name = 'quotes' allowed_domains = ['quotes.toscrape.com' ...

  9. python爬虫学习笔记-scrapy框架(1)

    简介 什么是框架? 所谓的框,其实说白了就是一个[项目的半成品],该项目的半成品需要被集成了各种功能且具有较强的通用性. Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名, ...

最新文章

  1. HTTP 错误 500.19 - Internal Server Error
  2. python内置函数中的zip,max,min函数例子
  3. 牛客 - 共鸣问题(贪心+思维)
  4. hyperstudy联合matlab,HyperStudy对后处理排气管道参数的灵敏度分析及优化设计
  5. AA级与AAA级台灯 重要指标对比
  6. 类模板(参考《C++ Templates 英文版第二版》)
  7. oracle数据库生产,从安装系统到oracle数据库生产环境(centos6.8)搭建
  8. 2016年1月20日总结
  9. Windows核心编程_Edit控件无法输入问题
  10. tp5时间戳转换日期格式
  11. 微信小程序下拉刷新真机没效果_微信小程序下拉刷新上拉加载的两种实现方法...
  12. Dependency Walker使用说明
  13. 正则限定开头和取反 (否)
  14. android获取手机的国家码
  15. 【APICloud系列|34】上架华为应用市场缺少免责函?
  16. Android繁星眨眼动画效果
  17. 阿里云ECS主机部署LAMP环境
  18. 非常简单-Linux环境下(有公网IP)或虚拟主机的环境下如何做一个网站???
  19. 在番看付费美女直播,不想花钱,我这样做了!
  20. java fally是什么意思_fall是什么意思_fall的翻译_音标_读音_用法_例句_爱词霸在线词典...

热门文章

  1. Js获取当前系统时间,24小时制
  2. treeview 文字垂直方向_word文本排版技巧:改变文字方向的这些方法,你知道吗?...
  3. c++ msflexgrid 使用_丝杠支座组件C
  4. 数据中心的容器操作系统--k8s理解
  5. linux内核网络子系统收发过程剖析
  6. (216)滤波器介绍
  7. (147)FPGA面试题-Verilog移位相加实现乘法(二)
  8. stm32使用stlink烧录后jlik烧不进去_【MCU实战经验】+用stm32单片机做J-Link和ST-Link...
  9. python print 变量_0、python 的 print()函数、变量和赋值
  10. 用函数模板实现选择排序算法_干货|STL容器和算法