scrapy的流程

其流程可以描述如下:

  1. 调度器把requests-->引擎-->下载中间件--->下载器
  2. 下载器发送请求,获取响应---->下载中间件---->引擎--->爬虫中间件--->爬虫
  3. 爬虫提取url地址,组装成request对象---->爬虫中间件--->引擎--->调度器
  4. 爬虫提取数据--->引擎--->管道
  5. 管道进行数据的处理和保存

注意:

  • 图中绿色线条的表示数据的传递
  • 注意图中中间件的位置,决定了其作用
  • 注意其中引擎的位置,所有的模块之前相互独立,只和引擎进行交互

scrapy中每个模块的具体作用

1.scrapy项目实现流程

  • 创建一个scrapy项目:scrapy startproject 项目名

  • 生成一个爬虫:scrapy genspider 爬虫名 允许爬取的范围

  • 提取数据:完善spider,使用xpath等方法

  • 保存数据:pipeline中保存数据

2. 创建scrapy项目

命令:scrapy startproject +<项目名字>

示例:scrapy startproject myspider

生成的目录和文件结果如下:

settings.py中的重点字段和内涵

  • USER_AGENT 设置ua
  • ROBOTSTXT_OBEY 是否遵守robots协议,默认是遵守
  • CONCURRENT_REQUESTS 设置并发请求的数量,默认是16个
  • DOWNLOAD_DELAY 下载延迟,默认无延迟
  • COOKIES_ENABLED 是否开启cookie,即每次请求带上前一次的cookie,默认是开启的
  • DEFAULT_REQUEST_HEADERS 设置默认请求头
  • SPIDER_MIDDLEWARES 爬虫中间件,设置过程和管道相同
  • DOWNLOADER_MIDDLEWARES 下载中间件

创建爬虫

命令:scrapy genspider +<爬虫名字> + <允许爬取的域名>

生成的目录和文件结果如下:

完善spider

完善spider即通过方法进行数据的提取等操做:

注意:

  1. response.xpath方法的返回结果是一个类似list的类型,其中包含的是selector对象,操作和列表一样,但是有一些额外的方法
  2. extract() 返回一个包含有字符串的列表
  3. extract_first() 返回列表中的第一个字符串,列表为空没有返回None
  4. spider中的parse方法必须有
  5. 需要抓取的url地址必须属于allowed_domains,但是start_urls中的url地址没有这个限制
  6. 启动爬虫的时候注意启动的位置,是在项目路径下启动

数据传递到pipeline

为什么要使用yield?

  • 让整个函数变成一个生成器,有什么好处呢?
  • 遍历这个函数的返回值的时候,挨个把数据读到内存,不会造成内存的瞬间占用过高
  • python3中的range和python2中的xrange同理

注意:

  • yield能够传递的对象只能是:BaseItem,Request,dict,None

6. 完善pipeline

pipeline在settings中能够开启多个,为什么需要开启多个?

  • 不同的pipeline可以处理不同爬虫的数据
  • 不同的pipeline能够进行不同的数据处理的操作,比如一个进行数据清洗,一个进行数据的保存

pipeline使用注意点

  • 使用之前需要在settings中开启
  • pipeline在setting中键表示位置(即pipeline在项目中的位置可以自定义),值表示距离引擎的远近,越近数据会越先经过
  • 有多个pipeline的时候,process_item的方法必须return item,否则后一个pipeline取到的数据为None值
  • pipeline中process_item的方法必须有,否则item没有办法接受和处理
  • process_item方法接受item和spider,其中spider表示当前传递item过来的spider

scrapy介绍及使用相关推荐

  1. python爬虫之Scrapy介绍八——Scrapy-分布式(以爬取京东读书为示例)

    Scrapy-分布式(scrapy-redis)介绍 1 Scrapy-分布式介绍 1.1 Scrapy-redis工作原理 1.2 Scrapy-redis 安装和基本使用 1.2.1 安装 1.2 ...

  2. Python scrapy框架(01):scrapy介绍 初识scrapy

    前言: 最近在整理资料,顺便把部分干货写出来供学习以交流 一.scrapy的介绍 (1)何为框架?如何学习框架 框架就是一个集成了很多功能的一个通用性比较高的模板: 学习框架就学习框架中封装好的各种功 ...

  3. scrapy框架_Scrapy框架学习---Scrapy介绍(一)

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

  4. Scrapy介绍及入门

    一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了页面抓取 (更确切来说, 网络 ...

  5. 第41讲:Scrapy框架的介绍

    在前面编写爬虫的时候,如果我们使用 requests.aiohttp 等库,需要从头至尾把爬虫完整地实现一遍,比如说异常处理.爬取调度等,如果写的多了,的确会比较麻烦. 那么有没有什么办法可以提升我们 ...

  6. Scrapy:Python的爬虫框架----原理介绍

    [scrapy]学习Scrapy入门 字数2820 阅读6946 评论2 喜欢12 Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息 ...

  7. Scrapy源码阅读分析_1_整体框架和流程介绍

    From:https://blog.csdn.net/weixin_37947156/article/details/74435304 Scrapy github 下载地址:https://githu ...

  8. Scrapy基础 第三节:Scrapy框架结构和组件介绍

    前置知识: 掌握Python的基础知识 对爬虫基础有一定了解 说明: 运行环境 Win10,Python3 64位 目录: 第一节:Scrapy介绍和安装配置 第二节:Scrapy版的Hello Wo ...

  9. python爬虫——scrapy框架(介绍)

    一.scrapy介绍 Scrapy是用纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能快速的抓取. Scrapy使用了 Twisted[ˈtwɪ ...

  10. 5.Scrapy与相关应用

    目录 Scrapy介绍 Scrapy爬取Quotes to Scrape Scrapy爬取cnblog Scrapy项目创建 Scrapy的组件 Scrapy的组件Spider 组件Item 组件It ...

最新文章

  1. Java编程基础04——流程控制语句
  2. 硬核!如何全面系统地自学 Java ?(必看)
  3. float占几个字节_一个HashMap对象占多少字节?
  4. P1115 最大子段和
  5. 【模板】可持久化并查集
  6. node 安装_VUE项目迁移之node.js的安装
  7. 利用HttpWebRequest和HttpWebResponse做黑客注射工具
  8. 20061008: IntelliJ Idea 6
  9. 公众服务常用电话号码大全
  10. php+生成条形码18位,php实现在线生成条形码示例分享(条形码生成器)
  11. margin-top传递问题
  12. 【三】Apache的管理及优化
  13. 基于CentOS7.2安装win7虚拟机
  14. 毕业三周年,又一个离别季
  15. axios拦截器作用及工作流程详解
  16. Shiro角色和权限管理
  17. 加强计算机管理,浅谈如何加强高校计算机专业管理
  18. K-近邻算法全面解析
  19. 网易云音乐、QQ音乐一键下载工具(Go语言)
  20. 机器学习100天(三十四):034 先验概率、条件概率

热门文章

  1. 《虎胆龙威4》观后感
  2. 自然语言处理seq2seq模型实现人工智能对对联(基于TensorFlow框架)
  3. RTC领域首个AI算法大赛 AI in RTC 2019 创新挑战圆满落幕
  4. windows7 下安装 kali Linux 双系统
  5. Docker架设服务器系列
  6. 黑客使用含病毒的邮件 半年内盗取近20亿卢布
  7. html5制作颜色的诗句,带有颜色的诗句(精选60句)
  8. 查找——图文翔解SkipList(跳跃表)
  9. Linux第六章课后题
  10. 利用简单Json处理实现企业微信后台“客户朋友圈”统计导出