【Python爬虫】Scrapy框架(一)

Python适合做爬虫的原因

1、语言本身简单,适合敏捷开发
2、有比较完善的工具链
3、足够灵活,以应对各种突然状况

爬虫的知识体系

1、前端相关知识:html,css,js;浏览器相关知识;
2、各种数据库的运用;
3、http协议
4、对于前后台联动的方案;

爬虫框架

简单来说,就是一些爬虫项目的半成品,比如可以将一些常见爬虫功能的实现代码部分写好,然后留下一些接口,在做不同的爬虫项目时,只需要根据实际情况,编写少量需要变动的代码部分,并按照需求调用这些接口,即可以实现一个爬虫项目

爬虫进阶的工作流程

工作流程.png
Scrapy组件

引擎(Engine):用来处理整个系统的数据流,触发事务(框架核心)

调度器(Scheduler):用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址

下载器(Downloader):用于下载网页内容,并将网页内容返回给引擎(Scrapy下载器是建立在twisted这个高效的异步模型上的)

爬虫(Spiders):用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。也可以从中提取出链接,让Scrapy继续抓取下一个页面

项目管道(Item Pipelines):负责处理爬虫从网页中抽取的(Item),主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据,并保存数据

下载器中间件(Downloader Middlewares):位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应,是进行反反爬工作的重点

爬虫中间件(Spider Middlewares):介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出

Scrapy运行流程:
1、Spiders发送第一个URL给引擎
2、引擎从Spider中获取到第一个要爬取的URL后,在调度器(Scheduler)以Request调度
3、调度器把需要爬取的request返回给引擎
4、引擎将request通过下载中间件发给下载器(Downloader)去互联网下载数据
5、一旦数据下载完毕,下载器获取由互联网服务器发回来的Response,并将其通过下载中间件发送给引擎
6、引擎从下载器中接收到Response并通过Spider中间件发送给Spider处理
7、Spider处理Response并从中返回匹配到的Item及(跟进的)新的Request给引擎
8、引擎将(Spider返回的)爬取到的Item给Item Pipeline做数据处理或者入库保存,将(Spider返回的)Request给调度器入队列
9、(从第三步)重复直到调度器中没有更多的request

补充资料

什么是Scrapy框架?

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以高效的爬取Web页面并提取出我们关注的结构化数据
应用领域:包括爬虫开发、数据挖掘,数据监测、自动化测试、信息处理或存储历史数据、获取API所返回的数据(例如 Amazon Associates Web Services )

使用Scrapy框架爬取数据与使用Requests+Xpath爬取数据,区别是什么?

1、入门requests+Xpath相对来说更加简单,更能摸清爬虫每个详细的步骤。当你只是简单的爬取小量的网页(几千页),而不喜欢配置Scrapy框架繁重的设置,那requests+Xpath是不可多得的利器
2、requests+Xpath能够实现的功能,scrapy也能便捷地实现。scrapy是一个功能非常强大的爬虫框架,它不仅能便捷地构建request,还有强大的selector能够方便地解析response
3、然而最受欢迎的还是Scrapy的性能,即抓取和解析的速度。它的downloader是多线程的,request是异步调度和处理的。这两点使它的爬取速度非常之快。另外还有内置的logging,exception,shell等模块,为爬取工作带来了很多便利,使你的爬虫标准化和工程化。

扩展阅读

学习更多关于Scrapy的使用和操作方法:Scrapy框架官网英文文档中文文档

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,688评论 4 46
  • 背景 部门(东方IC、图虫)业务驱动,需要搜集大量图片资源,做数据分析,以及正版图片维权。前期主要用node做爬虫...
    字节跳动技术团队阅读 7,661评论 1 67
  • 12月24号,25号是什么日子呢? 哈哈,咋不知道,平安夜!圣诞节! 哎。。。。。。。。 ♪♪♪ 你永远不懂我伤悲...
    晨曦之路阅读 198评论 2 1
  • 茶分类:红茶 黄茶 白茶 乌龙茶 黑茶 绿茶 前五种都是在绿茶的基础上制成的 绿茶: 不发酵茶类。干茶、茶汤、叶底...
    楼上二哈不要吵阅读 555评论 1 3
  • 1.微观经济学:行为,制度和演化 2.政治学十五讲 3.人类的荣耀 4.理解公司 5.自然正义 6.博弈与社会 7...
    夫子大师兄阅读 106评论 0 0