scrapy框架

scrapy 是一个爬虫框架,能够高效率,高层次的爬取页面的数据并进行处理。

在scrapy的英文文档中,有这样的一个流程图

scrapy 框架主要分为五大部分,spider, engine,scheduler,downloader,item pipelines

spider:是用户自己编写的爬虫主程序,爬取那些网站,获取网上的什么数据,等

engine: 引擎,是scrapy爬虫框架的主体结构,负责整个框架的运转,就像电脑的cpu一样,控制着框架中数据流的流动,同时负责调动各个组件的调用。

scheduler:调度器,相当于一个牧羊人,主要是把从spider中得到的Requests 放进队列中,按照顺序排列 听从引擎的指挥。

downloader: 下载器,负责解析Requests 得到response

item pipelines :item 是爬虫程序获取的数据 ,最后存入管道里 有pipelline进行数据的处理  比如写入数据库,保存本地json文件,excel文件等方式。

其大致流程为:

  启动爬虫程序的时候,引擎(engine)根据spider中的start_urls列表中的url获取Request类 交给调度器(scheduler),调度器将得到的Requests放进队列中,然后引擎从队列中取出Requests 再交给下载器(downloader),下载器得到respons响应,引擎在将得到的响应发送给spider 主程序,进行解析,会得到解析的的数据(item)和Requests   引擎将得到的数据,放入pipelines中进行数据处理(保存数据库,保存本地json文件等),得到的Requests 引擎再交给调度器,放入队列中,从这一步骤开始循环,直到spider得到数据都是item放进pipeline里面进行处理 整个爬虫程序结束。

爬虫程序结构

|--------------------------------------------SpiderTest

|-----------------------------spiders

|---------__init__.py

|--------------test.py

|-------------------------__init__.py

|----------------------------items.py

|-------------------middlewares.py

|------------------------pipelines.py

|--------------------------settings.py

scrapy (一)的更多相关文章

  1. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  2. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  3. scrapy 知乎用户信息爬虫

    zhihu_spider 此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo,下载这些数据感觉也没什么用,就当为大家学习scrapy提供一个例子吧.代码地 ...

  4. ubuntu 下安装scrapy

    1.把Scrapy签名的GPG密钥添加到APT的钥匙环中: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 6272 ...

  5. 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务

      上周学习了BeautifulSoup的基础知识并用它完成了一个网络爬虫( 使用Beautiful Soup编写一个爬虫 系列随笔汇总 ), BeautifulSoup是一个非常流行的Python网 ...

  6. Scrapy:为spider指定pipeline

    当一个Scrapy项目中有多个spider去爬取多个网站时,往往需要多个pipeline,这时就需要为每个spider指定其对应的pipeline. [通过程序来运行spider],可以通过修改配置s ...

  7. scrapy cookies:将cookies保存到文件以及从文件加载cookies

    我在使用scrapy模拟登录新浪微博时,想将登录成功后的cookies保存到本地,下次加载它实现直接登录,省去中间一系列的请求和POST等.关于如何从本次请求中获取并在下次请求中附带上cookies的 ...

  8. Scrapy开发指南

    一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. Scrapy基于事件驱动网络框架 Twis ...

  9. 利用scrapy和MongoDB来开发一个爬虫

    今天我们利用scrapy框架来抓取Stack Overflow里面最新的问题(),并且将这些问题保存到MongoDb当中,直接提供给客户进行查询. 安装 在进行今天的任务之前我们需要安装二个框架,分别 ...

  10. python3 安装scrapy

    twisted(网络异步框架) wget https://pypi.python.org/packages/dc/c0/a0114a6d7fa211c0904b0de931e8cafb5210ad82 ...

随机推荐

  1. 高斯消元求主元——模意义下的消元cf1155E

    #include <bits/stdc++.h> , MO = ; ; inline int qpow(int a, int b) { ; while(b) { ) { ans = 1ll ...

  2. Python 基于request库的get,post,delete,封装

    # coding=utf-8 import json import requests class TestApi(object): """ /* @param: @ses ...

  3. JavaScript or jQuery 获取option value值 以及文本内容的方法

    1.html <div class="form-group"> <label>保险公司</label> <select class=&qu ...

  4. LUA IO库

    I/O库为文件操作提供两种模式. 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件.而且提供针对这些文件相关的操作.全然模式(complete model)使用外部的文件句柄 ...

  5. Objective-C 方法交换实践(三) - Aspects 源码解析

    一.类与变量 AspectOptions typedef NS_OPTIONS(NSUInteger, AspectOptions) { AspectPositionAfter = 0, /// 原方 ...

  6. C# 自定义特性Attribute

    一.特性Attribute和注释有什么区别 特性Attribute A:就是一个类,直接继承/间接继承Attribute B:特性可以在后期反射中处理,特性本身是没有什么*用的 C:特性会影响编译和运 ...

  7. throws、throw和try catch

    在学习代理模式的时候,编写动态生成代理类.java文件时,用try{}catch(){}捕获异常发现catch(Exception e)报错,得换成catch(Throwable e),然后又查了查两 ...

  8. MySQL无法启动重启竟是因为改了Linux主机名

    MySQL无法重启.无法关闭.无法启动.无法使用,如果是因为修改了主机名,可以这样解决:关闭掉所有mysql进程,然后在启动一些mysql! 有时候,只要执行如下MySQL初始化命令即可解决:/usr ...

  9. JAVA 设计模式之原型模式

    目录 JAVA 设计模式之原型模式 简介 Java实现 1.浅拷贝 2.深拷贝 优缺点说明 1.优点 2.缺点 JAVA 设计模式之原型模式 简介 原型模式是六种创建型设计模式之一,主要应用于创建相同 ...

  10. async之诗句慢慢出现

    <body> <ul class="oul"></ul> <script> let str = ["君不见,黄河之水天上来 ...