美文网首页
【Python爬虫】Scrapy框架(一)

【Python爬虫】Scrapy框架(一)

作者: 倔强的潇洒小姐 | 来源:发表于2018-05-14 17:53 被阅读61次

    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框架官网英文文档中文文档

    相关文章

      网友评论

          本文标题:【Python爬虫】Scrapy框架(一)

          本文链接:https://www.haomeiwen.com/subject/tisjdftx.html